コード例 #1
0
        void OnChanged(object sender, FileSystemEventArgs e)
        {
            Task.Factory.StartNew(
                () =>
            {
                var info       = new FileInfo(e.FullPath);
                int retryCount = 0;

                do
                {
                    var timeout = 500 + retryCount * 100;
                    Thread.Sleep(timeout);
                    if (++retryCount > 30)
                    {
                        _logger.Error(
                            "Failed after {RetryCount} retries to Open File {FileInfo}",
                            retryCount,
                            info);
                        break;
                    }
                }while (!info.CanReadFile());

                return(info);
            }).ContinueWith(r => OnNewMessage(new NewMessageEventArgs(new MessageEntry(r.Result))));
        }