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

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

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

Re[1]: Controlへのスレッドセーフなアクセスについて


(過去ログ 100 を表示中)

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

■59604 / inTopicNo.1)  Controlへのスレッドセーフなアクセスについて
  
□投稿者/ human (1回)-(2011/06/01(Wed) 23:03:21)

分類:[.NET 全般] 

こんにちは。よろしくお願いします。

【開発環境】
C#
.NetFW4.0

【やりたいこと】
FormのShownイベント内でスレッドを生成し、
そのスレッドで計算した結果をFormに貼付けされているTextBoxに表示したい。

【困っていること】
Invokeなどを使用して、上記の処理は実現できたのですが、
スレッドで計算をしている途中に
×ボタンなどで、そのFormを閉じられてしまうと、
”ウィンドウ ハンドルが作成される前、コントロールで Invoke または BeginInvoke を呼び出せません。”
の例外が発生する。

【試してみたこと】
if (base.IsHandleCreated && !base.IsDisposed)
{
処理
}
のように、2つのプロパティを使ってみましたが、
やはり例外が発生します。

----
計算途中に×ボタンが押された場合などは、TextBoxに書き込みなどをする必要がなくなるので、
その処理を行わないようにしたいのですが、
どうプログラミングすればよいのでしょうか?

ご存じの方、どうぞご教示ください。
引用返信 編集キー/
■59606 / inTopicNo.2)  Re[1]: Controlへのスレッドセーフなアクセスについて
□投稿者/ human (2回)-(2011/06/01(Wed) 23:57:59)
すみません。自己解決しました。
 > if (base.IsHandleCreated && !base.IsDisposed)
これを、Invoke内ではなく
Invokeの前に置くことで回避できました。



No59604 (human さん) に返信
> こんにちは。よろしくお願いします。
>
> 【開発環境】
> C#
> .NetFW4.0
>
> 【やりたいこと】
> FormのShownイベント内でスレッドを生成し、
> そのスレッドで計算した結果をFormに貼付けされているTextBoxに表示したい。
>
> 【困っていること】
> Invokeなどを使用して、上記の処理は実現できたのですが、
> スレッドで計算をしている途中に
> ×ボタンなどで、そのFormを閉じられてしまうと、
> ”ウィンドウ ハンドルが作成される前、コントロールで Invoke または BeginInvoke を呼び出せません。”
> の例外が発生する。
>
> 【試してみたこと】
> if (base.IsHandleCreated && !base.IsDisposed)
> {
> 処理
> }
> のように、2つのプロパティを使ってみましたが、
> やはり例外が発生します。
>
> ----
> 計算途中に×ボタンが押された場合などは、TextBoxに書き込みなどをする必要がなくなるので、
> その処理を行わないようにしたいのですが、
> どうプログラミングすればよいのでしょうか?
>
> ご存じの方、どうぞご教示ください。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

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

管理者用

- Child Tree -