2016-05-29 20 views
0

は、このアクションメソッドをご検討ください使用Task.FromResult非同期アクションを作成するための

public static Task<bool> RemoveUserFromGroups(int userId, int customerId, bool isTrader, string connectionId, List<string> groupNames, string pusherAddress) 
{ 
    return Task.FromResult(PusherBusiness.RemoveUserFromGroups(userId, customerId, isTrader, connectionId, groupNames, pusherAddress)); 
} 

クラスでウェブを呼び出すサードパーティのライブラリでPusherBusinessクラスサービス。 私のコントローラを非同期モードに変更したいのですが、これはTask.FromResultを使用してTaskを返してから、それを待っていますか? これは非同期ですか?

答えて

1

いいえこれは全く非同期ではありません。

これは同期して実行され、タスクを作成し、完了したタスク(同期的に完了する)を待って同じスレッドを使用して移動します。

これを非同期にするには、実際には非同期操作が必要です。たとえば、RemoveUserFromGroupsがWebサービスを呼び出す場合は、非同期で行い、RemoveUserFromGroupsAsyncまたは少なくともBegin/EndRemoveUserFromGroupsを提供する必要があります。

長い間、実際には非同期操作を行うことはあまりありません。

+0

私は自分のコードから非同期を作成する方法はありますか? –

+1

@ShahroozJafariあなたのコードはすべて依存関係を使用しています。その依存関係が非同期をサポートしていない限り、あなたができることはあまりありません。 – i3arnon

+0

これを実行する価値がある場合は、バックグラウンドジョブに置くことができます(Task.Run)。しかし、理想的ではない。 –

関連する問題