- PR -

非同期処理について

1
投稿者投稿内容
よっぴー
会議室デビュー日: 2006/10/07
投稿数: 12
投稿日時: 2007-03-08 13:02
いつもお世話になっております。

今回も教えて頂きたい事があります

<処理の流れ>

@画面からある条件で検索を行う。

A検索処理を行うビジネスロジックを呼び出す。(検索処理はWebService:非同期)

B検索処理のビジネスロジックが処理を終えて画面に戻ってくる。

ここまでは、問題ないのですが

検索処理が非同期で行われているために、結果を取得するまえにビジネスロジックが
終わってしまうわけです。(当然のことですが。。)

検索の結果は、イベントで通知されるのですが、ビジネスロジックで結果が返ってくるまで待機したいと思っているのですが、どう実装してようのかがいまいち解らないわけです。

このへんの仕組みをご存知の方いましたら教えて頂きたいのですが。。。

よろしくお願いします。
turutosiya
常連さん
会議室デビュー日: 2003/06/10
投稿数: 49
お住まい・勤務地: 東京都
投稿日時: 2007-03-08 13:53
「検索の結果は、イベントで通知」されているのでしたら、イベントうけとればいいのではないでしょうか?

DoSearch() {
WebService ws = new WebService();
ws += イベントハンドラ
ws.Search();
待機する();
}

イベントハンドラ() {
待機終わり();
}
よっぴー
会議室デビュー日: 2006/10/07
投稿数: 12
投稿日時: 2007-03-08 14:09
F☆BASSさn

引用:

F☆BASSさんの書き込み (2007-03-08 13:53) より:
「検索の結果は、イベントで通知」されているのでしたら、イベントうけとればいいのではないでしょうか?

DoSearch() {
WebService ws = new WebService();
ws += イベントハンドラ
ws.Search();
待機する();
}

イベントハンドラ() {
待機終わり();
}

よっぴー
会議室デビュー日: 2006/10/07
投稿数: 12
投稿日時: 2007-03-08 14:15
F☆BASSさん書き込みありがとうございます。

イベントを受け取るまではできているのですが、
ビジネス側でイベントを受け取るまで待機ってできるんですかね・・
BL:
サーチ()
 WebServiceのコール

 待機したい。。。(結果が返ってきたら続行)

 結果を元に編集処理

 画面に戻る

イメージは、こんな感じです。。


僕の解釈が間違えていたらご了承ください。。


引用:

F☆BASSさんの書き込み (2007-03-08 13:53) より:
「検索の結果は、イベントで通知」されているのでしたら、イベントうけとればいいのではないでしょうか?

DoSearch() {
WebService ws = new WebService();
ws += イベントハンドラ
ws.Search();
待機する();
}

イベントハンドラ() {
待機終わり();
}

turutosiya
常連さん
会議室デビュー日: 2003/06/10
投稿数: 49
お住まい・勤務地: 東京都
投稿日時: 2007-03-08 14:46
結果を元に編集処理 を行うには、

DoSearch() {
WebService ws = new WebService();
ws += イベントハンドラ;
ws.Search();
}

イベントハンドラ(結果) {
結果を編集する();
}

また、"結果を編集する()" まで、画面の操作を受け付けたくない場合(あまり非同期の意味がなくなってしまいますが。。。)、

DoSearch() {
WebService ws = new WebService();
ws += イベントハンドラ;
ws.Search();
画面使用不可にする();
}

イベントハンドラ(結果) {
結果を編集する();
画面使用可にする();
}

でどうでしょう?
よっぴー
会議室デビュー日: 2006/10/07
投稿数: 12
投稿日時: 2007-03-08 23:40
F☆BASSさん書きこみありがとうございます。

なんとか、やりたいことが実現できました。

色々ありがとうございました。


引用:

F☆BASSさんの書き込み (2007-03-08 14:46) より:
結果を元に編集処理 を行うには、

DoSearch() {
WebService ws = new WebService();
ws += イベントハンドラ;
ws.Search();
}

イベントハンドラ(結果) {
結果を編集する();
}

また、"結果を編集する()" まで、画面の操作を受け付けたくない場合(あまり非同期の意味がなくなってしまいますが。。。)、

DoSearch() {
WebService ws = new WebService();
ws += イベントハンドラ;
ws.Search();
画面使用不可にする();
}

イベントハンドラ(結果) {
結果を編集する();
画面使用可にする();
}

でどうでしょう?


1

スキルアップ/キャリアアップ(JOB@IT)