0

ファイルを非同期的にアップロードするメソッド:

public async void UploadScreenshot(DateTime? date = null)
{
    var uploadTask = Task.Factory.StartNew(() => _ftp.UploadFile(_screenshotLocalFile,
                                                                 date.HasValue
            ? _screenshotRemoteFile.Replace("{1}", date.Value.ToString(Helper.StandardTimeFile))
            : _screenshotRemoteFile.Replace("{1}", DateTime.Now.ToString(Helper.StandardTimeFile))));
    await uploadTask;
}

使用法:

UploadScreenshot();

これは、ファイルを非同期的にアップロードする有効な方法ですか?

4

2 に答える 2

2

まあ、それにはいくつかの問題があります:

  1. async voidイベント ハンドラーにのみ使用する必要があります。それ以外の場合はすべて、async Task(またはasync Task<T>) を使用して、メソッドが終了するまで非同期に待機し、実行中に発生したエラーを適切に処理できるようにする必要があります。
  2. メソッドは同期UploadFile()メソッドをラップするだけです。非同期の代替手段 ( UploadFileAsync()) がある場合は、代わりにそれを使用する必要があります。
  3. (または)から取得しawaitた を使用せずに直接返すことで、より効率的にすることができます。TaskStartNew()UploadFileAsync()
于 2013-04-20T15:01:39.300 に答える