- - PR -
コールバック手法の非同期WebService コールバックメソッド内でフォームのコントロールへのアクセス方法が
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-03-16 18:11
こんばんは。ASP.NETをC#でコーディングして、1ヶ月程度の初心者です。
コールバック手法での非同期Webサービスを研究しています。 コールバックメソッド内で、もともとのWebフォームのコントロールのアクセス方法が わかりません。 いろいろなホームページを訪れてみたのですが3日たっても解決できず、ついに会議室に投稿してしまいました。 Webサービスは、10秒程度スレッドスリープしてから "Hello World"の文字列を返す簡単なものです。 呼び出し側は、このWebサービスと非同期で通信し、結果(Hello World)を適当なラベルコントロール上に表示したいのです。 ボタンを押したときのイベント処理として、 localhost.Service1 s = new localhost.Service1(); private void Button1_Click(object sender, System.EventArgs e) { System.AsyncCallback cb = new AsyncCallback(test.WebForm1.TestCallBack); System.IAsyncResult ar = s.BeginHelloWorld(cb,s); while(!ar.IsCompleted) { //なんらかの処理 } } としておき、コールバックメソッドを public static void TestCallBack(System.IAsyncResult ar) { localhost.Service1 sr = (localhost.Service1)ar; string result = sr.EndHelloWorld(ar); . . . ? } としたとき、このコールバックメソッド上で、もともとのフォーム(test.WebForm1) のラベルコントロールにアクセスする方法で悩んでいます。 教えて君で申し訳ないのですが、参考となるURLなどありましたら、 是非ともお願いします。 [ メッセージ編集済み 編集者: Tanishi 編集日時 2006-03-16 18:13 ] [ メッセージ編集済み 編集者: Tanishi 編集日時 2006-03-16 18:15 ] | ||||||||
|
投稿日時: 2006-03-16 18:20
それはちょっと無理ですね。
もうクライアントに返してしまっているのでどう足掻いてもアクセス出来ません。 _________________ 囚人のジレンマな日々 | ||||||||
|
投稿日時: 2006-03-16 18:56
なんて書いてるので終わるまで待つみたいですが、 そもそも何のために非同期にしようとしてるのかよく分かりませんね… | ||||||||
|
投稿日時: 2006-03-16 19:03
WebフォームからWebサービスを非同期で呼んで終了するまで待つ? 非同期の必要があるのでしょうか? #かぶった [ メッセージ編集済み 編集者: todo 編集日時 2006-03-16 19:03 ] | ||||||||
|
投稿日時: 2006-03-16 19:12
非同期のWebサービスというと、Ajaxをよく耳にします。 言語にこだわる必要がなければ、少し調べてみてはいかがでしょうか。 | ||||||||
|
投稿日時: 2006-03-16 22:51
あ,ほんとだ^^; でも,待ってたとしても,非同期呼び出しの「コールバック」は別スレッドだから,非同期呼び出しを開始したリクエストのスレッドのWebフォームにアクセスするのは無理でしょうね. #絶対無理って事はないでしょうけど. _________________ 囚人@わんくま同盟 囚人のジレンマな日々 [ メッセージ編集済み 編集者: 囚人 編集日時 2006-03-16 22:53 ] | ||||||||
|
投稿日時: 2006-03-17 07:32
Ajaxで実現すべきでは?
以下のサンプルが参考になるかと。 ASP.NET 1.1 Ajax (Hello World) http://www.friendlysw.com/aspnet/Articles/Goto.aspx?id=050825-1 ASP.NET 1.1 My Ajax.NET (郵便番号から住所取得) http://www.friendlysw.com/aspnet/Articles/Goto.aspx?id=050825-3 ASP.NET 2.0 Callback (Webサーバーから日時を取得) http://aspspider.net/AkioKasai/Goto.aspx?id=060224-4 ASP.NET 2.0 Callback (郵便番号から住所取得) http://aspspider.net/AkioKasai/Goto.aspx?id=060224-6 ASP.NET 2.0 Atlas Callback (Webサーバーから日時取得) http://aspspider.net/AkioKasai/Goto.aspx?id=060309-1 _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 | ||||||||
|
投稿日時: 2006-03-17 10:49
たくさんのみなさまからのご返答、誠にありがとうございます!
悠さん、Accessさんのご意見どおり、Ajax研究します! 囚人さんも、ズバリ、「無理」とのご回答ありがとうございました! なちゃ、todoさんのご指摘ごもっともです。 非同期通信の有利な面も、ボヤッとしかとらえていないので、これも勉強ですね・・・。 |