想要將任務鏈接到先前的實例(如果存在)。目前,兩者都在同一時間執行。如何將任務鏈接到它的前一個實例?
對於 一個任務工作初始代碼:
private async void MenuMediaAddFiles_OnClick(object sender, RoutedEventArgs e)
{
var dialog = GetDefaultOpenFileDialog();
using (dialog)
{
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
using (var progress = new SimpleProgress(this))
{
int addFiles = await _context.AddFiles(dialog.FileNames, progress);
Console.WriteLine("Files added: {0}", addFiles);
}
}
}
}
一個失敗的嘗試,使其工作:
Task<int> _files;
private async void MenuMediaAddFiles_OnClick(object sender, RoutedEventArgs e)
{
var dialog = GetDefaultOpenFileDialog();
using (dialog)
{
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
using (var progress = new SimpleProgress(this))
{
int addFiles;
Task<int> files = _context.AddFiles(dialog.FileNames, progress);
if (_files == null)
{
_files = files;
}
else
{
var task1 = await _files.ContinueWith(task => _context.AddFiles(dialog.FileNames, new SimpleProgress(this)));
}
addFiles = await _files;
Console.WriteLine("Files added: {0}", addFiles);
}
}
}
}
你是否需要'ContinueWith()'的'await'?沒有它會發生什麼? – 2013-04-29 18:37:06
如果我刪除它,我仍然會得到相同的結果。 – Aybe 2013-04-29 18:41:59
我很困惑你想要什麼樣的行爲。如果它存在,你是否想等待先前的任務?當前一個任務存在時,你想對從_context.AddFiles返回的任務做什麼? – 2013-04-29 18:48:58