保存.txt所需的时间?

时间:2014-09-15 13:31:14

标签: c# timer system.timers.timer

我目前编写的程序包含一个监视网络路径的FileSystemWatcher。

这些文件都是.txt' s。大多数文件介于200k和3 MB之间,因为如果文件直接保存到监视文件夹中我会收到错误,而不是被复制,我正在根据这个答案构建一个计时器:

FileSystemWatcher fires before file is saved - how do you "pause" the process?

现在有问题在房间里,我需要处理非常快的事件,所以我应该真的使用用户提到的1000毫秒还是更低的值?更具体一点:什么是我应该选择的最小值,一方面要快,另一方面还要保存?

也许我的问题有更好的解决方案?

€:我现在选择使用https://stackoverflow.com/a/3822355/3664953作为解决方案。由于我有可能一次处理几个文件,我选择在TPL中使用它。 我在事件中使用的代码:

private void OnCreate(object sender, FileSystemEventArgs e)
{
  var fi = new FileInfo(e.FullPath);
  Console.WriteLine(e.Name + " " + DateTime.Now);
  System.Threading.Tasks.Task.Factory.StartNew(() =>
    {
      DoWork(fi);
    }
  );
}

我使用的代码不会因为太快而遇到异常:

private void DoWork(FileInfo file)
{
  var sw = new System.Diagnostics.Stopwatch();
  sw.Start();
  while(true)
  {
    if (IsFileLocked(file) == false)
    {
      break;
    }
    if(sw.ElapsedMilliseconds >= 30000)
    {
       _log.Status(Log.LL.Error, String.Format("Datei {0} ist gesperrt und kann nicht   
                    importiert werden.", file.Name));
       return; 
    }
  }
...

在片刻,我遇到的唯一问题是,如果有100个文件被创建/复制,它会变得难以置信,这导致我的MSSQL稍后会返回超时。但这不是我必须处理的问题:)

Ty指出我正确的方向Neolisk。

0 个答案:

没有答案