使用异步和不安全

时间:2017-10-11 07:37:10

标签: c# asynchronous unsafe

通过问题的标题,人们会立即说“不,这是不可能的!”,但请继续阅读。 (顺便说一句,我搜索过,没有这样的问题,所以afaik这个不是重复一次)

阅读“C#5.0中的异步”我读了

  

不安全代码

     

标记为不安全的代码可能不包含等待。不安全的代码应该是非常罕见的,应该保存到不需要异步的自包含方法。无论如何,await编译器转换会破坏大多数情况下的不安全代码(页30)

我从中收集到的是里面一个不安全的块,你不能写“等待”。 但是如何(并且跟随我之前的问题)一个函数

void DoSomethingUnsafeHere(int[,] image)
{
  unsafe{
     }
}

async Task Caller()
{
   await Task.Run(() => DoSomethingUnsafeHere(image));
} 

我猜这是可能没有问题,不是吗? 当然,这似乎是一种独立的方法。 任何评论,对此的建议将不胜感激

1 个答案:

答案 0 :(得分:1)

是的,这应该没有问题。

(您期望得到什么样的答案?async方法由编译器转换为状态机,这可能会破坏unsafe代码。调用方法不是问题,该方法是asyncunsafe还是其他任何方法都无关紧要。)