佐々木屋

技術的なことから趣味まで色々書きます

1.C#、VB.NET-2.非同期処理

非同期処理でフォームOpen/Closeを制御する

非同期処理中はスレッドセーフでなければアクセス出来ないことは以前説明しました。 sasaki816.hatenablog.com 今回は同じような内容ですが、非同期でフォームを開いたり閉じたりする処理を考えます。例えば、ボタンクリックを非同期処理で行い、その別スレ…

非同期処理、マルチスレッド(async/await)

非同期処理最終話です。.Net Framework4.0でTaskクラスが登場し、非同期処理がより簡単に書けるようになりましたが、.Net Framework4.5からTaskクラスをもっと使いやすくしたasync/awaitが登場します。 非同期処理はThreadから始まり、Timerスレッドやデリ…

非同期処理、マルチスレッド(Task②戻り値、引数がある場合)

前回はTaskクラスの実行方法を説明しました。メソッドは戻り値、引数が無いvoidを例としていますが、戻り値や引数がある場合のメソッドをTaskに実行させることも可能です。なお、今回のコードはRunメソッドを採用します。Factory.StartNewメソッドでも書き方…

非同期処理、マルチスレッド(Task①基本)

ThreadPoolの概念を引き継ぎ、より改良された非同期処理クラスとして .NET Framework4.0以降に登場したのがTaskクラスです。 Taskクラスはスレッドプールを利用しますが、生成・管理は全てクラス側が勝手にやってくれますので、特に意識する必要はありません…

非同期処理、マルチスレッド(余談:別スレッドからフォームコントロールを操作)

そもそもフォームもクラスですし、クラスにあるオブジェクトを別スレッドから操作は出来ません。フォーム自体がスレッドセーフではないから当然と言えば当然なんですが、非同期処理をやるとカウンタや進捗表示など、どうしてもフォームオブジェクトへアクセ…

非同期処理、マルチスレッド(ThreadPool)

<ThreadPoolクラスの基本> 前回Threadクラスを用いた非同期処理を説明しましたが、スレッドの新規作成は思っている以上にコストがかかります。スレッドは生成だけではなく破棄される時もコストがかかるので、頻繁に使用すると処理がとても重くなってしまい…

非同期処理、マルチスレッド(古の手法:Thread)

<Threadクラスの基本> Threadクラスは.NET Framework1.1からある一番古い手法です。現在はほとんど使用されていないのではないでしょうか。 むしろ今どきこれをつかって非同期処理をやると考えているのであれば、間違いなく止めた方がいいでしょう。Thread…

非同期処理、マルチスレッド(基本)

<そもそも非同期処理とは何ぞや?> まず同期処理から。処理の流れ(スレッド)は一本なので、途中でちゃちゃを入れることが出来ません。例えば、重たい処理と軽い処理を順番に処理させるプログラムを考えましょう。同期処理の場合、当然ながら処理中は別の…