タグ

threadに関するgreenbizのブックマーク (3)

  • Windows業務アプリケーション開発 Q&A #6 ― @IT

    記事は、業務アプリケーション向けコンポーネントのベンダであるグレープシティのテクニカル・サポート担当に対して、実際にプログラマーから問い合わせがあった質問を取り上げて解説しています。 VS 2005で実行するとスレッド処理で例外が発生 Visual Studio .NET 2003(以下、VS 2003)で作成したWindowsアプリケーションをVisual Studio 2005(以下、VS 2005)へ移行する作業をしています。VS 2003のときは問題なく動作していたコードなのですが、VS 2005で実行すると、 「有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール '……' がアクセスされました。」 という例外が発生してしまいます。.NET Framework 2.0(以下、.NET 2.0)ではスレッド関係の処理に何か変更があったので

    greenbiz
    greenbiz 2009/03/07
    VS 2005で実行するとスレッド処理で例外が発生
  • バックグラウンド処理を途中でキャンセルするには?[2.0のみ、C#、VB] - @IT

    バックグラウンド処理をキャンセル可能にするために、BackgroundWorkerコンポーネントのWorkerReportsProgressプロパティをtrueに設定しておく。 BackgroundWorkerコンポーネントのキャンセル処理 BackgroundWorkerコンポーネントにおけるキャンセル処理の流れは以下のようになる。 BackgroundWorkerコンポーネントのCancelAsyncメソッドを呼び出す。これにより、BackgroundWorkerコンポーネントのCancellationPendingプロパティがtrueに設定される。 重い処理を行っているDoWorkイベント・ハンドラでは、CancellationPendingプロパティがtrueに設定されていないか(=キャンセルが要求されていないか)を定期的にチェックし、trueになっていれば「e.Cancel」*1

  • 【C#】時間のかかる処理をバックグラウンドで実行するには?[2.0のみ、C#、VB] − @IT

    Windowsアプリケーションでは、時間のかかる処理(以下、重い処理)はアプリケーションのメインのスレッドとは別のスレッドで行わなければならない。これは重い処理がアプリケーションのユーザー・インターフェイス(UI)をフリーズさせてしまうからだ。 たとえユーザーがその処理の完了まで待つ必要があるとしても、その間にウィンドウの移動や最小化ができなければならないし、可能であれば処理の進ちょく状況をプログレス・バーなどで表示すべきである。 .NET Framework 2.0では、そのような処理を容易に実装するための「BackgroundWorkerコンポーネント」が新しく追加されている。これを使えばスレッドをほとんど意識することなく、重い処理を別スレッド(バックグラウンド)で実行させることができる。 稿では、BackgroundWorkerコンポーネントを利用し、進ちょく状況を表示しながら、重

  • 1