私は現在、サーバー上で非同期に実行される新しいタスクを生成することになっているWCFサービスを使用しています(実行する必要があるdbクエリなどがあります)。新しいタスクが終了してクライアントを閉じる前に、応答がクライアントに返される可能性があります (非常に可能性が高い)。この時点で、タスクの作成中に利用可能だった依存関係は利用できなくなります。タスクを完了するには、まだいくつかの依存関係が必要です。
新しいタスクに必要な依存関係がまだ生きていることを確認するにはどうすればよいですか?
基本的な例を示すために、いくつかの非常に単純なコードを含めました。
public string SubmitData(
User user, Request request)
{
History history = m_history.CreateRequest(user);
//New task which will do an import of data into the DB.
Task.Factory.StartNew( () =>
Import( user, request, history ) );
/*Return some sort of response back to user so they're not waiting for
*the long process to complete
*/
return "Response";
}
private void Import(
User user,
Request request,
History history)
{
var response = Import(
user, request, history);
m_history.Save(history, response );
}