C# 使异步任务接口与monodroid向后兼容
我在一个核心类库中为存储库提供了一系列接口,它将返回类型定义为任务。这些接口在其他项目中用于定义异步方法 我需要在Xamarain monodroid项目中实现这些相同的接口,我想知道如何在不使用async Wait的情况下使用相同的返回类型,因为monodroid中还不支持async Wait。如果可能的话,我根本不想修改现有的核心库接口。从技术上讲,您不必使用C# 使异步任务接口与monodroid向后兼容,c#,xamarin.android,xamarin,xamarin-studio,C#,Xamarin.android,Xamarin,Xamarin Studio,我在一个核心类库中为存储库提供了一系列接口,它将返回类型定义为任务。这些接口在其他项目中用于定义异步方法 我需要在Xamarain monodroid项目中实现这些相同的接口,我想知道如何在不使用async Wait的情况下使用相同的返回类型,因为monodroid中还不支持async Wait。如果可能的话,我根本不想修改现有的核心库接口。从技术上讲,您不必使用async/wait;这比“手工”简单得多。您的实现只需返回从不为空且已启动的任务(如果适用) 有一些有用的技巧和指南。一种键类型是T
async
/wait
;这比“手工”简单得多。您的实现只需返回从不为空且已启动的任务(如果适用)
有一些有用的技巧和指南。一种键类型是TaskCompletionSource
,您可以使用它包装任何异步实现(例如,APM)。同步实现可以使用Task.FromResult
(这只是TaskCompletionSource
的一个小包装。如果您有CPU工作要做,可以使用Task.Factory.StartNew
,即Task.Run
。对于更复杂的实现,您需要一个带有ContinueWith的延续
换句话说,只要返回的任务始终处于启动状态,所有.NET 4.0 TPL技术都可以使用。(获取未启动的任务的唯一方法是使用任务
构造函数构造它,而不是调用启动
。因此,只要不这样做,就应该没有问题。)也许可以看看Microsoft.Bcl
它为WP7提供了异步和等待。还有一个名为AsyncBridge
的项目,它为PCLs、Xamarin.Android和Xamarin.iOS实现任务