分類:[C#]
2010/05/21(Fri) 10:47:43 編集(投稿者)
2010/05/21(Fri) 10:47:36 編集(投稿者)
2010/05/21(Fri) 10:47:31 編集(投稿者)
<pre><pre>こんにちは
.netframework3.5でWindowsアプリ作ってます。
WEBの自動巡回ツールのようなものを作っているのですが ごくまれに固まってしまったり
エラーがキャッチできないことがあります。
いつも発生するわけではなくごく稀になので原因がつかめず悩んでます。
原因わかりましたら教えてください。
ボタンクリックイベント{
//新しいスレッドを作成
threads = new Thread(new ParameterizedThreadStart(startThreadMain));
threads.IsBackground = true;
//スレッドで処理するqueueを引数で渡して起動
threads.Start(thqueues);
}
delegate void CloseDelegate();
private void startThreadMain(Object o) {
//スレッド内での処理をするQueue
ThreadQueue thqueue = (ThreadQueue)o;
try {
//メイン処理を行う
//MainClass.Main内でWebBrowserをNEWしてWEBから情報を取得し
//その結果をFormアプリに結果を返す
DeleMain sbook = new DeleMain (MainClass.Main);
//
IAsyncResult ret = this.BeginInvoke(sbook, new object[] { thqueue });
//登録処理が終わるまで待つ
ret.AsyncWaitHandle.WaitOne();
if (ret.IsCompleted) {
//↓EndInvokeの行でNullReffrenceExceptionが稀に発生するが下でcatchできない
object obj = this.EndInvoke(ret);
}
//終了時の処理
//終了メッセージを画面表示
Invoke(new CloseDelegate(finish));
} catch (Exception ex) {
//エラー処理
}
}
ちなみにWebアプリケーション(ASP.netとかPHP,Perl)は専門なのですが
Windowsアプリはこれが初めてで マルチスレッドの考え方が根本的に何か問題あるのかもしれません。
おかしい点があればご指摘いただければ幸いです。
よろしくお願いします。</pre></pre>