コード例 #1
0
	internal static void Init(WebConfig webConfig)
	{
		if (string.IsNullOrWhiteSpace(webConfig.GamePath))
		{
			return;
		}

		PhysicalFileProvider val = new(webConfig.GamePath, ExclusionFilters.Sensitive)
		{
			UsePollingFileWatcher = true,
			UseActivePolling = true
		};
            
		RefreshSwfs();
		RegisterWatch();

		void RefreshSwfs()
		{
			Console.WriteLine("Refreshing SWFs");

			Parallel.ForEach(new DirectoryInfo(webConfig.GamePath).GetFiles().OrderBy(f => f.LastWriteTime), async swf =>
			{
				byte[] bytes = await System.IO.File.ReadAllBytesAsync(swf.FullName);

				DataAccess2.CalcHashAndAdd(bytes);
			});
		}

		void RegisterWatch()
		{
			IChangeToken token = val.Watch("*.swf");
			token.RegisterChangeCallback(state =>
			{
				RefreshSwfs();
				RegisterWatch();
			}, null);
		}
	}