C#
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと 実行してるexe自身のフルパス、もしくはそれが保存されてるフォルダのパスを取りたい。 サンプルコード // フォルダ Console.WriteLine(Environment.CurrentDirectory); Console.WriteLin…
やりたいこと Taskとか非同期処理を調べていると、あちこちに「コンテキスト」「同期コンテキスト」「非同期コンテキスト」という言葉が出てくる。 これが、調べても調べても何のことを言っているのかわからない。 なんとなく、「コンテキスト ≒ スレッド」…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと タイトルとは別のしらべものをしているときに、 null許容について知らないことがいろいろわかった気がしたので、理解したかどうかはおいておいて、忘れたくないものを取り急ぎメモ。 別の…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと あるとき、ジェネリクスで、 T型の戻り値をもつメソッドを引数にとって、 引数で受けたメソッドを実行する。 実行したときに例外なく実行出来たら、そのまま引数で受けたメソッドが返した…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと 以前の記事でやったようなのを、C#から起動したコマンドでもやりたい。 コマンドを起動した後に、YesかNoかを聞かれる場合に、自動で「Y」と入力したことにしたい。 サンプルコード 実験…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと 以前の記事で、コンソールアプリの標準出力を受け取る方法を調べた。 今回は、それを非同期で出来るというのを見たので、やり方をメモしておく。 サンプルコード 実験用に、標準出力と標…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと 別のコンソールアプリのexeを実行したときに、 戻り値ではなくて、コマンドプロンプトで実行したときに黒窓に出てくるアレを受け取りたい。 例えば、ipconfigのコマンドだと、下記のよう…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと 自分が作ったプログラムのexeと同じ階層に、あらかじめ指定のファイルを配置しておきたい場合に、 下図のように、ソリューションエクスプローラーにファイルを追加して、そのプロパティで…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと 前回記事の続き。 コードと資料 コード https://github.com/tera1707/InterfaceJikken 資料 https://github.com/tera1707/Siryou/blob/master/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%8…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと 仕事で読むコードに「interfaceの明示的実装」が出てきたが、 以前理解したはずなのに、またアレ?となった。 もう忘れないようにまとめておきたい。 前提 VisualStudio2022 .NET6 コード…
やりたいこと .net6環境で、自分のアプリ(exe)やライブラリ(dll)をビルドすると、 xxxxx.deps.jsonというファイルができてくる。 これは何のファイルなのか?もしいらないファイルなら消したいが、消してよいのか?を調べてみた。 結論 ライブラリ(dll)ビル…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと アプリを作る中で、 「あるメソッドを実行したときに、例外がスローされたら数回リトライしたい」 「数回リトライしてもまだ例外スローするならあきらめて処理継続したい」 というような…
パイプ関連記事 もくじ https://tera1707.com/entry/2022/02/06/144447#Pipe やりたいこと 以前の記事で、パイプの受信用タスクがキャンセルできるようにした。 どうせ閉じるなら、DisposableにしてDisposeしたときに勝手にキャンセルするようにしたい。また…
パイプ関連記事 もくじ https://tera1707.com/entry/2022/02/06/144447#Pipe やりたいこと 以前の記事で、プロセス間通信のためのパイプ通信を少し改良した。 が、前回のものはまだパイプ受信スレッドを立ち上げると、その後終了ができなかったりまだ改良の…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと 以前の自分の記事で、Taskのキャンセルの仕方を調べた。 そこで、なんとなくキャンセルの仕方がわかったのだが、下記の記事を拝見して、さらに便利にキャンセルする方法があると知った。 …
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと 自分のアプリから、別のexeを管理者で起動したい。 やりかた ProcessクラスのItartInfoのVerbを"RunAs"にする。 またその際、UseShellExecuteをtrueにして、そのプロセスをStartする。 そ…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと タスクの中で行っている処理を、キャンセルしたい。 また、以前の記事で、タスクの状態遷移を調べたときに、 下表の中のCanceled(6)とFaulted(7)が、どういう状態なのかがよくわから…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと タスクは、作ったり動かしたり、キャンセルしたりで、いろいろ状態が変化する。 その変化を試したときのメモ。 下記のような状態があるらしい。 https://learn.microsoft.com/en-us/dotne…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと 以前の記事で、Ioc と ServiceCollection を使って、DI(Dependency Injection)をやったが、そのときコンストラクタで受けるクラスは、それぞれ別のインターフェースを実装するクラスだ…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと xmlファイルを読み込みたい。 具体的には、VisualStudioのC#(.net6)のプロジェクトファイル(.csproj)を読み込んで、中身の情報を見たい。 csprojのサンプルはこんな感じ。 <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ImplicitUsings>e</implicitusings></propertygroup></project>…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと Grepみたいな機能を作るために、指定した拡張子のファイルを、指定のフォルダの中から、子フォルダの中も含めて検索するような機能をつくりたい。 やりかた DirectoryInfoクラスのGetFile…
もくじ https://tera1707.com/entry/2022/02/06/144447#UnitTest やりたいこと クラスの中で持っているprivateなフィールドやプロパティの値を外からいじって、そのクラスをユニットテストしたい。 以前、.NET6でprivateやinternalなメソッドを呼ぶ方法を調…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと 「例外設定」の画面で、例外が発生したときにVisualStudioでプログラムを止めてくれるように設定できるが、元々ある例外に対してしかその設定をしたことがなかった。自前で作った例外でも…
やりたいこと 以前、自前でログを取るためのクラスを作ったりしたが、マルチスレッドの場合に同時に書き込んだりすると落ちるなど、問題があった。 頑張って自分で作るのもいいが、世の中には便利なログ取りライブラリがある様子。 最近NLogというのに触れる…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと nugetで参照するあるパッケージ(ライブラリ)の異なるバージョンを、一つのexeから切り替えてつかいたい。 基本、一つのexeでnugetで参照できる1つのパッケージの複数のバージョンを同時に…
パイプ関連記事 もくじ https://tera1707.com/entry/2022/02/06/144447#Pipe やりたいこと 以前の記事で勉強した、プロセス間通信につかう「パイプ」のためのサンプルプログラムを改良したい。 (というか、元のサンプルプログラムがいろいろまずそうだったの…
もくじ https://tera1707.com/entry/2022/02/06/144447/WinUI3 やりたいこと WinUI3で「標準のコントロールのstyleやテンプレート」を取ってくるために、以前、下記の記事で、generic.xamlを取ってくればいいということを調べた。 コントロールのマウスオー…
もくじ https://tera1707.com/entry/2022/02/06/144447#Task やりたいこと 以前の記事で、Taskの中で例外が起きた時のキャッチの仕方を学んだが、今回、Task.WhenAll()で複数の戻り値のあるタスクの完了を待ったときに、そのタスクのどれかで例外があったら…
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと あるスレッドで行っている処理を、別のスレッドの処理が終わるまで待ってほしい、みたいなケースがあった。なにかよいやり方ないか、調べてみる。 やり方 ManualResetEventもしくはAutoRe…
もくじ https://tera1707.com/entry/2022/02/06/144447#UnitTest やりたいこと 以前の記事で、ServiceCollectionとIocを使って依存objectの登録と取り出しができることが分かった。 しかし、登録は、プログラムの初めの部分で登録したらよいのだろう、という…