异步/等待抛出的最小示例“调用线程无法访问此对象,因为另一个线程拥有它。”

时间:2018-05-16 19:29:30

标签: c# asynchronous

我已经阅读了文档和各种示例,但他们都在UI的上下文中讨论。

我理解不同的线程无法访问特定线程拥有的对象。但是,在我的情况下,我不知道这是如何适用的(当然,我正在做它以某种方式,我只是不能指出它。)

我正在处理的代码非常复杂,我无法重现最低限度的工作示例。

我希望看到的是使用asyncawait的最低工作示例,其中抛出此异常,因为我无法找到。

1 个答案:

答案 0 :(得分:0)

来自Async/Await - Best Practices in Asynchronous Programming

async Task MyMethodAsync()
{
  // Code here runs in the original context.
  await Task.Delay(1000);
  // Code here runs in the original context.
  await Task.Delay(1000).ConfigureAwait(
    continueOnCapturedContext: false);
  // Code here runs without the original context (in this case, on the thread pool).

  ////////////////
  // ETA: Put some UI code here and it will probably throw an exception.
}

这是获得例外的另一个例子:

await Task.Run(()=>{ /* place your UI code here */});