2016-04-01 7 views
1

デバイスへのTCP接続を行い、デバイスからデータを継続的に取得したい。私は単純な要求でこれを開始し、ページの応答が完了してもそれをバックグラウンドで保ちたい。これはasp.netで可能ですか?Response.Endの後にASP.NETワークのスレッドを続行できますか?

+0

新しいスレッドを生成し、そのスレッドでデバイス通信を行う必要があります。要求処理スレッドは、ホスト(IISなど)が完了後にリクエストスレッドプールに返すため、使用できません。 – Dai

答えて

1

Response.Endの後にASP.NETワークのスレッドを続けることはできますか?

はい、あなたは気にしないことができるかどうかの結果を必要としません。

たとえば、次のコードでは、AddLogAsyncを呼び出してログを挿入しますが、挿入が成功するかどうかは気にしません。

public Task AddLogAsync(Log log) 
{ 
    return Task.Run(() => AddLog(log)); 
} 

private void AddLog(TraceLog traceLog) 
{ 
    // Do something here. 
} 

私は、デバイスへのTCP接続を行い、 は、デバイスからデータを取得継続的に維持したいです。私は単純な要求 でこれを開始し、それを動作させておきたいと思います。これはasp.netで可能ですか?

私は上記の質問を本当に理解していません。 Response.Endの後、何も返すことはできませんが、別のスレッドの中で何かを続けることはできます。

+0

Winでは、デバイスに接続し、そこからデータを取得するために使用しているオブジェクトを生き続けることが可能ですか?そして、このオブジェクトが生きていて、デバイスの火事イベント(出席制御デバイス)で仕事をしているかどうか、どうすればよいでしょうか? – uzay95

+0

私の答えは、プロセスが生きているかどうかを確かめることができないということです。確かめたい場合は、[hangfire](http://hangfire.io/)などのタスクをスケジュールする必要があります。基本的に、Response.Endの後、デバイスとサーバー間の接続が切断されます。言い換えれば、サーバーはもはやデバイスと通信できません。サーバーとデバイスとの通話を希望する場合は、[SignalR](http://www.asp.net/signalr)という別のテクノロジを使用します。 HangfireとSignalRは元の質問の範囲外です。 – Win

関連する問題