2017-10-11 3 views
0

質問のタイトルで「いいえ、それはできません!」とすぐに言いますが、読んでください。私は安全でないコード非同期で安全でないものを使用する

を読んで、「C#5.0で非同期」を読ん (私が検索し、この重複していない私の知る限りので、このような疑いがあるんところで)

安全でないとマークされたコードには、待機が含まれていない可能性があります。安全でないコードは非常にまれであり、非同期である必要がない自己完結型のメソッドに保持する必要があります。 awaitコンパイラ変換がとにかくほとんどの状況で危険なコード(ページ30)

私はこのことから集まる何を、あなたが書くことができない内部の危険なブロックを「待つ」ということですが破ります。 しかし、どの程度(と私の前の質問次)機能

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

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

私は何の問題もこれが可能である推測しています、それはないですか? これは自己完結型の方法であるようです。 これに関するコメント、推奨事項は非常に高く評価されます

+1

"XにはYが含まれていない可能性があります"という状況は、「YにはXが含まれていない可能性がある」ということを自動的に想定する必要があります。 –

答えて

1

はい、問題はありません。

(答えのどのような期待してたの?async方法がunsafeコードを壊す可能性のあるプロセスである、コンパイラによってステートマシンに変換されます。メソッドを呼び出すと、問題ではありません、それはその方法がasyncであるかどうかは無関係です、unsafe、または他の種類の方法)

関連する問題