C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[18]: 新しいスレッド上からBeginInvokeで「時々」固まる [1]


(過去ログ 84 を表示中)

[トピック内 22 記事 (21 - 22 表示)]  << 0 | 1 >>

■49977 / inTopicNo.21)  Re[17]: 新しいスレッド上からBeginInvokeで「時々」固まる
  
□投稿者/ なちゃ (439回)-(2010/05/25(Tue) 21:26:35)
一応ここだけ。

No49973 (たか さん) に返信
>>開始終了処理に時間がかからないのであれば、特にマルチスレッドにする「必要性」は感じない、という程度ですかね。
>>※特にマルチスレッドにしなくても、普通に作れそうに見える、くらいの言い方なら通じますかね?
> 上の回答のどこかにも少し書きましたがMainClass,MainはWEBの巡回なので 長いときは完了までに1時間以上かかったりします^^
> 最短でも1分弱とかで・・・
> 処理が重たい、、、というより いろんなページを回るのでレスポンス待ちが長いという感じですが・・・

私が開始終了処理と言っているのは、MainClass.Mainを呼び出す側の、今でいうstartThreadMainのことで、そのうちMainClass.Mainの処理を待っている部分は含めない部分のことです。
MainClass.Mainは非同期で呼び出して、完了を待たず、完了処理を非同期処理の終了後のタイミングで(これも非同期に)ハンドリングすれば、特にマルチスレッドを使う必要はないように見えます、ってことです。

ブロックしないように非同期の組み合わせで動かすことで、UIスレッドはすぐに処理を返すようにすればいい、ということです。
今でいうstartThreadMainの実行期間のほとんどは、MainClass.Mainの完了を待ってるだけですよね?
ここで待たないようにすればよい、ということです。

解決済み
引用返信 編集キー/
■49980 / inTopicNo.22)  Re[18]: 新しいスレッド上からBeginInvokeで「時々」固まる
□投稿者/ たか (54回)-(2010/05/25(Tue) 22:37:02)
>なちゃさん
>MainClass.Mainは非同期で呼び出して、完了を待たず、完了処理を非同期処理の終了後のタイミングで(これも非同期に)ハンドリングすれば、特にマルチスレッドを使う必要はないように見えます、ってことです。

確かに言われてみるとそのとおりですね。
わざわざスレッドわけなくても普通に非同期で呼び出せばいけますね、たぶん。


上にあるように元々BeginInvokeは別スレッド上で動くと勘違いしていたので
別スレッド上で処理 → Formのスレッドには影響ないし快適♪ って思っていました。

しかし上にあるようにどちらにせよFormのスレッドの方で動くのであれば新しいスレッド立ち上げる意味0ですね。。。


普通の非同期で実装し直したいと思います。
ご指摘ありがとうございました。

解決済み
引用返信 編集キー/

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -