|
スマートではないですが以下のようにわければ 実装も楽だし目的のこともほぼ実装できるのではないですか?
1.目的のWEBメソッドを非同期で呼び出し 2.目的のWEBメソッド内で進捗状況を適宜ファイルやDBに吐き出す 3.上記のCSVorDBから進捗情報を適宜取得するWEBメソッドを作成し1秒に1回呼び出し進捗状況を取得する
厳密な進捗は把握できませんが 1にそこそこ時間がかかる処理であればそれなりの進捗の様子は取得できると思います。
複数の呼び出しの可能性もあるから 1の呼び出し時に固有キーを渡してやり 2,3の処理でその固有キーごとに 値を書き込み、取得できるような工夫とか必要ですが この方法なら1時間あれば実装できると思いますがいかがでしょう?
いかがでしょう? ■No49865 (やぶ さん) に返信 > 開発環境:WindowsXP、VisualStudio2008 Professional Edition > > C#のASP.NETのWebサービス(.NET Framework 2.0)で処理に時間のかかる > Webメソッドで進捗を取得したいと考えております。 > どのようなニュアンスかというと、 > > [WebMethod] > public void Sample() > { > Thread.Sleep(1000); > Thread.Sleep(1000); > Thread.Sleep(1000); > } > > 上記のようなWebメソッドを実装する際に、それぞれの処理の間に > クライアントに進捗状態を返したいと考えております。 > BackgroundWorkerにおけるProgressChangedイベントとReportProgressメソッドのような > イメージなのですが、Webメソッドの場合どのように実装すればよいのでしょうか。 > よろしくお願いいたします。
|