Reflectionは、実行時に型情報やAttributeなどのメタ情報を取得するための仕組みです。Attributeが付加する「情報」を読み取り、動作を切り替える役割を担い、フレームワークや自作処理で広く利用されています。
C#の [ ] で記述されるAttributeは、コードに追加の意味や設定を与える仕組みです。処理そのものではなくメタ情報として付与され、コンパイラやフレームワーク、実行時の仕組みによって解釈されて初めて意味を持ちます。
非同期処理では、同じリソースへの同時アクセスによる競合が起こりやすくなります。本記事では、lock、SemaphoreSlim、キュー、Interlocked などを使った代表的な競合対策を整理します。
async/await は別スレッドを作る仕組みではなく、処理を中断・再開して待ち時間を効率化するための仕組みです。本記事では、awaitする場合としない場合の違いを含めて、その挙動を整理します。
WPFなどのUIアプリでは、UIを扱うスレッドは基本的に1本です。本記事では、UIスレッドの役割、画面が固まる理由、そして async/await がUIの応答性にどう関わるのかを整理します。
非同期処理を理解するには、まずスレッドの役割を押さえる必要があります。本記事では、プロセスとスレッドの違い、同期処理との関係、そして async/await を理解する前提となる考え方を整理します。
C#でも外部ライブラリやデバイスとの連携では、ポインタやファイルハンドルなど低レベルなリソースを扱う場面があります。こうした状況で安全性を確保するために推奨されているのが SafeHandle です。
前の記事で整理したアンマネージドリソースの問題に対して、.NETではその解決手段として IDisposable という仕組みが用意されています。その役割や設計の考え方、基本的な使い方について整理します。
C#ではGCによりメモリ管理は自動化されていますが、すべてのリソースが対象ではありません。CLRが管理しないアンマネージドリソースの概念と特徴、マネージドとの違い、そしてGCとの関係を整理します。
LivewireのFileUploadで作成される一時ファイルが誰によっていつ削除されるのかを調べた覚え書きです。livewire-tmpへの保存タイミング・24時間後の自動クリーンアップの仕組み・S3利用時の注意点などをまとめています。