2012-06-26 119 views
1

我在調用一個同步的庫方法。我想使用新的asyncawait功能,但我不確定該庫如何不支持異步(不返回任務)。如何使庫方法調用異步?

有沒有辦法做到這一點或我需要建立一個包裝究竟是什麼

+0

該方法究竟是同步執行的?任務也是.net 4.0。 – Patrick

+0

如果你真的想要使用async/await,你需要編寫一個包裝類,它有一個標記爲async的方法,它調用你的庫方法。 – Mangist

+0

爲什麼不使用線程API實現自己的'BeginXXX'' EndXXX'方法? – Tudor

回答

2

您可以通過在後臺線程中調用它,在Task.Run之內運行同步代碼。

+0

是的,但請務必考慮[官方建議](http://blogs.msdn.com/b/pfxteam/archive/2012/03/24/10287244.aspx)。 –

+0

['Task.Run'](http://msdn.microsoft.com/en-us/library/hh194919(v = vs.110))僅適用於.NET Framework 4.5 – gliderkite

1

這樣的事情?

using System.Threading.Tasks; 

new Task<bool>(() => 
{ 
    // Do something 
    return true; 
}).Start();