タグ

ブックマーク / csharper.blog57.fc2.com (2)

  • C#と諸々 IDisposable

    クラスがアンマネージリソースをフィールドに保持する場合、またはIDisposableインターフェイスを実装するクラスをフィールドに保持する場合、そのクラスはIDisposableインターフェイスを実装する必要がある。 IDisposableを実装する際は以下の要件を満たすために、Dispose Finalizeパターンを適用する。 Dispose()はマネージリソースとアンマネージリソースの解放処理を行う。 デストラクタはアンマネージリソースの解放処理を行う。 Dispose()が呼び出された場合、デストラクタがGCによって呼び出されることのないようにする。 Dispose()は複数回呼び出されても良いようにする。 Dispose()、デストラクタでは、例外がスローされないようにする。 Dispose()が呼び出された後にDispose()以外のパブリックメソッドを呼び出すとObjectD

  • 【C#】C#と諸々 Windowsアプリケーションにおけるマルチスレッドの注意点

    C#がメインで他もまぁ諸々なブログです おかしなこと書いてたら指摘してくれると嬉しいです(´・∀・`) つーかコメント欲しい(´・ω・`) 通常、Windowsアプリでは、イベントハンドラ内で重い処理を行う際は、フォームの一時的なハングを防ぐために重い処理を別スレッドで行う。 その時気をつけなければならないのが、コントロールの操作。コントロールは、コントロール (  の基になるウィンドウハンドル ) を所有しているスレッドで操作しなければならない。別スレッド内でそのままコントロールを操作してしまうと、正常に動作してくれない。 ( .NET 2.0から特に。 ) では、別スレッドで重い処理を行ったあと、どうやってコントロールを所有しているスレッドに処理を行わせるか?それには、Control.Invokeメソッドを使用する。Control.Invokeは、引数で受け取ったデリゲートオブジェクト

  • 1