自分磨きのITノート

プログラミング(C#、VB.NET)言語やデータベースの役立つ情報を初心者から中級者向けに発信します。

2018年02月

C#入門-Taskを使った非同期(マルチスレッド)プログラミングまとめ

今回は、C#で非同期プログラミングを作っていきたいと思います。

最近ではあまり見かけませんが、.Netで「スレッド」と検索すると検索結果にThreadクラスを使ったサンプルソースコードに出会うことがあります。しかし、Threadクラスは、.Net初期のバージョンからあるスレッドの記述方法です。.Net4.0以上のバージョンである場合、Taskクラスを使ったほうがオブジェクトの起動速度や今どきのプロセッサを効率よく使用できます。

Taskクラスは、あくまで1つの仕事(アクション)を定義するものにすぎません。しかし、マルチスレッド(非同期)として動作させることができるので、よく考えてプログラミングする必要があります。

C#言語はプログラマーに分かりやすくマルチスレッドを使用してもらうために進化してきたプログラミング言語です。まだまだ進化は続くと思います。
私もまだまだTaskについては学習中ですので、共に勉強出来ればと思います。

今では色々なサイトでTaskのサンプルソースを手に入れることが出来ます。しかし情報量が多く、簡単なサンプルが少なかったりします。そこで、なるべく簡単な説明でまとめてみました。


簡単なTaskクラスの例

続きを読む

DataGridViewの非バインドとバインドで表示速度がどれくらい違うのか計測

DataGridViewListViewのコントロールは、数万行のデータになってくると表示に時間がかかってしまいます。これは、描画処理が大量に発生して遅くなっているようです。

ListViewは、BeginUpdate()~EndUpdate()で描画を止めれば多少なり速くはなりますが、DataGridViewは、SuspendLayout()~ResumeLayout()を行ってもあまり効果がない場合があります。
また、行や列のAutoSizeをAllCellsなど指定すると、すごく遅くなるので行追加時はAutoSizeを切るなどして避けたいところです。

その他にDataGridViewの速度改善を調べてみると、手動で行を追加する方法とDataSauceに引き渡してバインドする方法とで速さに違いが出るそうです。実際に速度に違いがあるのか未検証だったので試してみました。

以下のような4パターンの検証です。

180217_1_datagridview_bind

①(非バインド1)Rows.Add()で1行ずつ追加していくパターン
②(非バインド2)Rows.AddRange()で一気に追加するパターン
③(バインド1)DataTableをバインドするパターン
④(バインド2)独自クラスをバインドするパターン


①(非バインド1)Rows.Add()で1行ずつ追加していくパターン

続きを読む

Windowsプログラミング入門 - 初めてのWindowsフォームアプリケーション

前回、Visual Studioをインストールしました。今回は、Windowsのデスクトップ上で動作する.NETアプリケーション-Windowsフォームの作り方を紹介します。また、プロジェクトを開始すると出来上がるひな形(テンプレート)ファイルの説明も簡単します。
※ 全くWindowsアプリケーションを作成したことのない方への記事となります。
※ VisualStudio2017で説明しています。

プロジェクト作成(ソリューション作成)

(1)Visual Studioを立ち上げ、[ファイル]-[新規作成]-[プロジェクト]を選択。 180210_1_newproject

(2)言語-[Windows クラッシックデスクトップ]-[Windows フォームアプリケーション]を選択。各項目を入力して「OK」ボタンを押します。
※ 言語はVisual Basicでも構いません。
180210_2_selectwindowsform

アプリケーションの名前やプログラムソースの保管先を選択することが出来ます。
他には.Net Frameworkのバージョンも選択できます。(今回は.Net 4.6.1)


Windowsフォームひな形(テンプレート)ファイルの説明

続きを読む
Amazon
自己紹介
【管理人】
なみやん
【コメント】
プログラムを組むことが大好きな30代男性。IT系の仕事を10年ちょいやっています。このブログを通して知識を人に伝えることによって、自分をさらに磨こうと精進しています。応援よろしくお願いします。
免責事項
当サイトで紹介しているサンプルソースコードは自由に使用いただいても結構が、自己責任でお使いください。また、記事の内容が主観的であったり、努力していますが正しくなかったりする場合がございます。読者本人の判断にお任せいたします。