C# Mutex メモ

 

C# PDFiumでPDFを読み込む

業務で利用するPDFを取り込んだらどうだろうと思い実験。とりあえず、ページ移動とブックマークのようなものだけ。

NuGetから、
・PdfiumViewer
・PdfiumViewer.Native.x86.v8-xfa
の2つをインストール。

 

C# クラス生成+リスト追加の高速化

・class → structへ変換
・AsParallel() / Linqの利用
・Capacity / Listの利用
・foreach() → AsParallel().ForAll()へ変換
・foreach() → Parallel.ForEach()へ変換
・List<ClassItem> → ConcurrentBag<ClassItem>へ変換
で実験。

 

C# Task/CancellationTokenでキャンセル

 

C# TabPageの複写

TabPageを動的に追加する場合、細かい設定は面倒なので、デザイナーで作っておいて複写したい。

TabPage、中に入れるControlどちらも、インスタンスに対して必要なプロパティを直接指定(nPage.Text = oPage.Textのように)した方が楽だけど、今回は自動で渡してみた。

 

 

C# ファイル検索(インクリメンタルサーチ)

C# ファイル検索+指定秒数でサムネイル作成(FFmpeg)

以前からときどきfenrir(B@r09u3 Style Op.2)というフリーソフトを利用していたが、更新が止まっているようなので、自分用に同じようなソフトを作成した。もともとファイル検索だけできればいいので、機能も見た目も限定的。

 

C# Timer遅延処理

インクリメンタルサーチ系を作るとき、だいたいTextChangedにそのまま処理をくっつけてしまうのだけど、量が多いとカクついてしまうので、TextChangedが連続していた場合Timerで遅延処理をつけたほうがいい。

 

C# Byte配列を16進数文字列へ

 

C# 別スレッドからコントロールにアクセス

あるいは、ラムダ式をMethodInvokerにキャストする。

・Invoke()の考え方として、Invoke()を呼び出したフォームに対して
別スレッドから操作をするメソッドを渡す。

・Invoke()の呼び出し方としては、複数回コントロールにアクセスする場合、Invokeの中ではなく、Invokeを複数回呼び出すような形にする。

・スレッドが別かどうか確認する場合(Controlにアクセスして大丈夫かと考える)
Control.InvokeRequired

 

C# Reflection DataTableをListに代入

DataGridViewのDataSourceにList<Model>を渡すとき、DataTableからList<Model>に代入をReflectionで作ってみる。普段はそのまま名前を書いてしまうことも多い。