2017-10-11 46 views
0

通過問題的標題,人們會立即說「不,這是不可能的!」,但請繼續閱讀。 (通過我搜索,但毫無疑問,如這個,所以據我所知這不是重複的方式)使用異步和不安全

讀「異步在C#5.0」我讀

不安全代碼

被標記爲不安全的代碼可能不包含await。不安全的代碼應該非常罕見,應該保存爲不需要異步的獨立方法。該編譯器的await改造將打破反正大多數情況下,不安全的代碼(頁30)

我從這個收集什麼,是你不能寫一個不安全塊「等待」。 但如何(以及下面我剛纔的問題)函數

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

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

我猜這是可能的,沒有任何問題,是不是? 當然,這似乎是一個獨立的方法。 任何意見,對此的建議將不勝感激

+1

在我的經驗中,「X不能包含Y」的情況並不多,應該自動假定暗示「Y不能包含X」。 –

回答

1

是的,這應該沒有問題。

(你期待什麼樣的回答?async方法得到的編譯器,它是可以打破unsafe代碼的過程變成了一個狀態機調用方法是不是一個問題,這是毫不相關的方法是否是asyncunsafe或任何其他類型的方法。)