假設我有一個異步方法,下面的方法簽名:轉換異步方法使用任務並行庫
public IAsyncResult MyAsyncMethod(AsyncCallback asyncCallback, object state);
,因此,我用下面的代碼來調用它,併爲它分配一個state
對象,回調:
public class test
{
// Private class to hold/pass-through data used by Async operations
private class StateData
{
//... Whatever properties I'll need passed to my callback ...
}
public void RunOnSeparateThread()
{
StateData stateData = new StateData { ... };
MyAsyncMethod(m_asyncCallback, stateData);
}
private AsyncCallback m_asyncCallback = new AsyncCallback(AsyncComplete);
private static void AsyncComplete(IAsyncResult result)
{
// Whatever stuff needs to be done after completion of Async method
// using data returned in the stateData object
}
}
我希望做使用任務並行庫同樣的事情,我不能確定如何做到這一點。什麼是正確的代碼,以達到相同的結果,是:在一個單獨的線程
- 運行
MyAsyncMethod
- 完成後有
state
對象返回它傳遞給下一個方法 - 在這種情況下AsyncComplete
或者還有更好的方法來完成相同的結果嗎?另外,雖然這是用C#編寫的,但我在VB和C#中也很舒服,所以任何答案都將不勝感激。
謝謝你,希望這是有道理的。
這應該幫助您開始:http://www.albahari.com/threading/part5.aspx#_Task_Parallelism –
非常感謝,@JoshL,看起來像一個非常有用的鏈接 - 現在看看它。 –
也許[這在MSDN上](https://msdn.microsoft.com/en-us/library/hh191443.aspx)也不錯。 – pid