2012-06-26 84 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();