1

私は ASP.NET WebApi Self-hosted サービスを持っています。これは、 というオブジェクトで何らかの作業を行いますTransaction。また、ダウンロード先のクライアントとして機能する別の WinForms アプリケーションがありますTransaction。クライアントが Android アプリケーションの Web アプリケーションである可能性があります (サービスはそれを気にする必要はありません)。

TransactionStatusには、操作中に送信済み -> 進行中 -> 完了/エラーに変化するという名前のプロパティがあります。

現在、私のクライアントは次のように動作します。

SubmitTransaction(Transaction t);

while(t.Status==inprogress)
{
   Thread.Sleep(1000);
   t= GetTransactionStatus();
}

ご覧のとおり、ステータスの更新を取得するために、毎秒サービスを「PING」する必要があります。Statusループやスリープなしでサービスが更新されたときに、サービスを「リッスン」して返す方法はありますか? .NET 3.5 を使用しています

詳細についてはお気軽にお問い合わせください。よろしくお願いします。

4

1 に答える 1

2

あなたが探しているのはプッシュ通知と呼ばれるものです

多くのライブラリと実装があります。.net で最も有名なのはSignalIR です

Web コンテキスト以外で使用する方法の例を見つけることができます: http://mscodingblog.blogspot.it/2012/12/testing-signalr-in-wpf-console-and.html

とにかく、それらはセットアップが非常に複雑であり、そのトランザクションについてリクエストするクライアントが少数であり、アプリの他の側面にリアルタイムのプッシュ通知が必要ないと思われる場合は、ステータスを確認するだけで簡単/高速になると思いますあなたがやっているようにX秒。

PS Thread.Sleep ではなく Timer を使用してください

于 2013-11-11T09:42:28.020 に答える