【发布时间】:2012-02-20 02:46:45
【问题描述】:
目前我有这个代码:
TaskCompletionSource<String> tcs = new TaskCompletionSource<String>();
// ...
process.OutputDataReceived += (sender, e) =>
{
if (e.Data == null)
{
outputWaitHandle.Set();
}
else
{
tcs.SetResult(e.Data.ToString());
}
};
// ...
return tcs.Task;
那么这个函数的用户的工作方式是:
private async void Foo_Click(object sender, RoutedEventArgs e)
{
String output = await ExecuteCommand();
}
现在的问题是我收到了这个错误:
“System.InvalidOperationException”类型的第一次机会异常 发生在 mscorlib.dll 类型的未处理异常 在 mscorlib.dll 中发生“System.InvalidOperationException”
附加信息:已尝试将任务转换为 完成时的最终状态
当我使用tcs.SetResult()时抛出这个问题。
【问题讨论】:
-
能否提供任务完成源的封装方法的签名>
标签: c# asynchronous async-await