【C#】Taskにタイムアウトを追加する

C# の非同期タスクにタイムアウトを追加して処理をキャンセルする方法の紹介です。 .NET の標準ライブラリのネットワーク呼び出し系の API は呼び出しにタイムアウトがついてることが多いですが、一般の API だと通常はタイムアウトがありません。上位から C…

【C#】ラムダのローカル変数のキャプチャーを回避する

string.Create の実装を見て気が付いた内容です。 ラムダ式の変数キャプチャーを回避して実行時に生成されるデリゲートでヒープのメモリ確保を削減できるという内容になります。 ラムダ式の変数キャプチャーとは ラムダ式内からローカル変数やフィールドを参…

【C#】R3のReactivePropertyのスニペット

R3 という Reactive Extensions(Rx) のモダンな実装が登場しました。Unity 向けの専用機能としてではなく、通常の .NET 開発環境でも利用可能なため、R3 を使った Observable なメッセージングの仕組みを環境を選ぶことなく利用できるようになりました。 利…

【C#/.NET8版】文字列の先頭だけを大文字 or 小文字に変換する

ものすごく昔に「【C#】文字列の先頭だけを大文字 or 小文字に変換する」という記事を書きましたが、あれからかなり時間が経って(前に記事を書いたのは今から5年前).NETに Span<T> や string.Create という機能が追加されよりパフォーマンス良く実装できるよ</t>…

【C#】ファイル名末尾にサフィックスを追加する

最近タイトルのような似たような実装を何度も書いて面倒だったので実装例を紹介したいと思います。 ファイルで拡張子とファイル名の間にサフィックスを追加する処理を何度も何度も書いてる気がするのでいい加減記事にしようと思って書いた内容です。 あと、…

【C#】System.Threading.Channels<T>の使い方

System.Threading.Channels の使い方を紹介したいと思います。 Channels は一定量のデータを格納するコンテナとして使用でき、入れた内容は取り出すまで保存されます。Channels は非同期操作に対応している FIFO(キュー)構造でスレッドセーフを保証しつつ…

Unity6でエディター編集中のシーン開始を高速化する

Unity でエディター上で作業しているシーンの開始(再生)の高速化の手段として「Enter Play Mode Settings」「Enter Play Mode Options」という設定項目がUnity2019.3頃から追加されています。これをONすると開始が爆速になると話題になりました。この機能…

ASP.NET Core 9.0をWindowsサービス化する

タイトルの通り、ASP.NET Core 9.0 の Kestrel を Windows サービス化してみようと思います。 以前「ASP.NET Core 2.0をWindowsサービス化する」という記事を書きましたがあれから状況が大きく変わっているため現時点の最新環境でどのように実現するのか紹介…

QTTabBarの個人的な設定

フォルダの余白をダブルクリックすると親フォルダーに移動できる機能が使いたくて使用していますが、標準とは少し異なる設定をしているためPC引っ越し時に毎回設定が分からなくなるため私的なメモになります。 基本的に標準のエクスプローラーにタブを追加し…

【Unity】エディターフォントが変更できなくなった件

2025年1月現在、Unity6のエディターフォントの変更ができなくなってしまっていたため状況のメモです。 2019年11月: 以下のフォント変更アセットを作成する https://takap-tech.com/entry/2019/11/30/231258 ↓↓↓ 2021年頃: 特殊なファイルを変更することで変…

【C#】バイナリにローカルパスを含めない設定

C#をビルドしてEXEやDLLを生成するとバイナリの中にビルドしたときのパスが入っていたりするのを除去する方法です。 特に設定しない状態でC#をビルドしたバイナリを一般公開してしまうと、ユーザーフォルダ内で開発していてパスに個人名に関係する名称が含ま…

【C#】あるフォルダ内のファイルを一つにまとめるツール

あるディレクトリ以下の特定のファイルを一つにまとめるツールを作成しました。 ローカルにあるソースコードをGeminiのような大きいトークン数を扱えるAIにファイルで渡して内容をレビューや改善するために、フォルダ内の特定のファイルを全て1つのファイル…