class 库中异步等待的通用方法
Generic Methods for async await in a class Library
是否可以在 Dot Net 4.0 class 库中编写通用异步方法?
问这个的原因
因为这样我就可以在任何以 .Net 4.0 为目标的项目中使用这个 dll。甚至在不支持 await 和 async 关键字的 IDE 之类的 VS 2010 中使用。
问题
我的问题是我的主要应用程序代码在 .Net 4.0 中,我使用 VS 2010。我想我将使用 VS 2012 创建一个通用 dll,我可以在我的主要代码中引用并使用它。
在我的应用程序中,有些代码需要时间并在 UI 线程中触发,导致我的应用程序挂起。如果我能达到我想要的,那么那些同步调用就不会挂了UI.
像这样
public static class AsyncHelpers
{
public static async Task<T> RunMethodAsync<T>()
{
//What to do here?
}
}
您可以在面向 .NET 4.0 的项目中使用 async/await;您只需要引用 Microsoft.Bcl.Async NuGet 包,它提供了必要的类型。当然,您还需要 C# 5(或更高版本)编译器,这意味着 VS2012 或更新版本。
我做到了。这是我所做的。
如果您通过 Nuget 包管理器控制台使用 .Net 4.0,请安装 Microsoft BCL Async。然后使用此代码
using System.Threading.Tasks;
namespace AsyncAwaitCL
{
public class AsyncHelpers
{
public static async Task<T> RunMethodAsync<T>(Task<T> task)
{
T returnValue = default(T);
returnValue = await task;
return returnValue;
}
}
}
大功告成。
是否可以在 Dot Net 4.0 class 库中编写通用异步方法?
问这个的原因
因为这样我就可以在任何以 .Net 4.0 为目标的项目中使用这个 dll。甚至在不支持 await 和 async 关键字的 IDE 之类的 VS 2010 中使用。
问题
我的问题是我的主要应用程序代码在 .Net 4.0 中,我使用 VS 2010。我想我将使用 VS 2012 创建一个通用 dll,我可以在我的主要代码中引用并使用它。
在我的应用程序中,有些代码需要时间并在 UI 线程中触发,导致我的应用程序挂起。如果我能达到我想要的,那么那些同步调用就不会挂了UI.
像这样
public static class AsyncHelpers
{
public static async Task<T> RunMethodAsync<T>()
{
//What to do here?
}
}
您可以在面向 .NET 4.0 的项目中使用 async/await;您只需要引用 Microsoft.Bcl.Async NuGet 包,它提供了必要的类型。当然,您还需要 C# 5(或更高版本)编译器,这意味着 VS2012 或更新版本。
我做到了。这是我所做的。
如果您通过 Nuget 包管理器控制台使用 .Net 4.0,请安装 Microsoft BCL Async。然后使用此代码
using System.Threading.Tasks;
namespace AsyncAwaitCL
{
public class AsyncHelpers
{
public static async Task<T> RunMethodAsync<T>(Task<T> task)
{
T returnValue = default(T);
returnValue = await task;
return returnValue;
}
}
}
大功告成。