[C#] 非同期処理がマジで分からなくて泣きそう

  • 投稿日:
  • by
  • Category:

やたらawaitしてるコードに出会う

他人が作った業務システムの手直ししているとこんなコードに出会った。

string contents1 = await DoSomething1Async();
string contents2 = await DoSomething2Async();
string contents3 = await DoSomething3Async();

DoSomething*Async()を見るとasync修飾子がついてて、それをawaitで受け止めてる形だ。

なんとなく非同期処理だなぁとは分かるが...恥ずかしながら「重い処理を実行するときにUIスレッドをブロックしないために使うアレね」ぐらいの認識。

これまでは「どうせ読み込み終わるまで次に進めないんだからUIなんてフリーズさせとけ!」の脳筋バカ思考だったので、ちょうどいい機会ということで勉強することに。

 

とりあえずasync/awaitだけでいい

↑にすべてが書いてある。

非同期にしたい関数の呼び出し元にawaitを付けて、呼び出し先の関数の戻り値をasync Task<T>にする。基本これだけ。

Task.RunとかWaitとかResult要らんし使うな、ということらしい。

あとイベントハンドラのみ戻り値をasync voidに。その時はtry/catchで例外をキャッチしよう。

まずこれを覚えた。

Dell SupportAssistが起動しない(インストールできない)時は.NET 5のランタイムを入れよう

先日の事件もあり、Dellのプリインストールアプリを見直していた。

その中でDell SupportAssistという各種ドライバやBIOSを自動で更新してくれるアプリを起動してみたが、いくつかあるDell PCのうちメインPCだけ起動しない。

起動時に「再起動後に再度実行しろ」とエラーメッセージが出るが何度再起動してもダメ。

一度アンインストールしてみて再度インストールしようとしても途中でエラーが出て失敗。

Clipboard01.jpg

だからPCの再起動は死ぬほどやったんだって...。どうすればええねん。

msconfigの「システムサービスを読み込む」をチェック外したらログインできなくなって死んだ話

Windows11のDell PCを買ってから、USBメモリ上のExcelファイルを上書き保存すると.tmpがファイルが消されずに残り続けるようになった。

わりと既知の現象らしいが、これと言って明確な解決方法が見つからない。

そんななか、Yahoo!知恵袋

msconfigから システムサービスを読み込む のチェックを外してOKを押して再起動する

と書いてあったためやってみたら、ログインが一切できなくなった。どうして。

マイクのノイズキャンセリング性能が高いイヤホンを探す2

前回の記事でマイクのノイキャン性能の高いワイヤレスイヤホンを探してみた。

約一年経って状況が変わってきたので【令和最新版】【2022年】バージョンをお届けする。

 

いきなり現れたダークホースElevoc Clear

色々なレビューを見ているとかなりイチオシされていたのがElevoc Clear。

detail_22302_16383445942943.png

マクアケというクラウドファンディングサービスで販売されていたようだが、今はもう販売終了している。値段は1万円少々。

公式ショップでは送料込み129ドルで販売されている。今1ドル136円なので1.7万円ぐらい。

海外通販でハードルが高くなっている上にこの価格差、ちょっと手が出にくい。

Xiaomi 11T Proのタッチ切れが酷すぎてキレそう

Xiaomi 11T Proを買った。

000.jpg

約1年前に買ったMi 11 Lite 5GはHuawei Bandとの相性が悪かったバックグラウンドタスクがすぐ殺されたり苦労もあったが、それっぽい充電器を探したMIUI13を満喫したり、一応満足はしていた。

が、やはりCPUもメモリも中途半端に足りずストレスもあった。

楽天モバイルの0円維持終了に伴いMNP転出先を探していたところ、IIJmioがXiaomi 11T Pro を3.5万円(事務手数料込み)で販売するということで即決。