0

私はファイルウォッチャーを備えたフォームを持っており、フォルダーに配置されたすべてのビデオファイルを複数のアドレスに転送します。複数のファイルが追加されたときに、スレッドで各転送を実行できるようにするための最良のオプションは何ですか。これが私のコードの例です:

DockingBarTransferEntities context = new DockingBarTransferEntities();

private void fileSystemWatcher1_Changed(object sender, System.IO.FileSystemEventArgs e)
        {
            IEnumerable<Diretorios> directories = context.Diretorios.ToList();            

            foreach (var destino in directories)
            {
                try
                {
                   Transfere(e.FullPath,Path.GetFileName(e.FullPath),destino);

                }
                catch (Exception ex)
                {
                    textBox1.Text += "Error: " + ex.Message;
                }
            }
        }

        public void Transfere(string fullPath, string name, Diretorios diretorio)
        {           
            try
            {
                if (Directory.Exists(diretorio.Caminho))
                {
                    string fileName = Path.GetFileName(fullPath);
                    fileName = String.Format("{0}\\{1}", diretorio.Caminho, fileName);

                    FileInfo arquivo = new FileInfo(fullPath);

                    arquivo.CopyTo(fileName, true);                  

                }
            }
            catch (Exception ex)
            {

            }
        }
4

1 に答える 1

1

これは次のように単純である必要があります。

Task.Factory.StartNew(() => Transfere(e.FullPath, Path.GetFileName(e.FullPath), destino));

Transfere直接呼び出す代わりに。

于 2012-12-11T15:32:57.263 に答える