スキップしてメイン コンテンツに移動

投稿

.NET MAUI 複数のJSONファイルをファイルエクスプローラーでリードして、アプリ内のストレージに保存する

.NET MAUIではエクスプローラーではなく、FilePickerだった そうなのです。なので、まずはFilePickerを使わなければ話にならない そして関わるのがことごとく非同期関数なので、try~catchでエラー処理しないと漏れが発生する   xaml側  とりあえず釦を一個だけ画面に貼り付ける <? xml version = "1.0" encoding = "utf-8" ?> < ContentPage xmlns = "http://schemas.microsoft.com/dotnet/2021/maui"               xmlns:x = "http://schemas.microsoft.com/winfx/2009/xaml"               x:Class = "MauiTestFile.MainPage" >     < ScrollView >         < VerticalStackLayout             Padding = "30,0"             Spacing = "25" >                         < Button x:Name = "FileSelectBtn" Clicked = "OnFileSelectBtnClicked"                     Text = "JSONファイルを選んでね"               ...

ImDiskの後継アプリのAIM toolkitを試してみた

ImDiskの開発辞めちゃったらしい というわけで、じゃあ後継ソフトはあるのかと思ったらあった 遅いと言われているけど・・・ とインストールしてみた ImDiskのこの間の結果はこちら 再びRAM DISK(ImDisk)   blog.mazepin-led.com    そして今回のAIM Toolkit なんか、無茶苦茶遅くなってるな 下手するとSSDの方が速いじゃん CPUの使用状態はこんな感じ PIO転送なところは変わって無さそう まあ、遅いからと言ってその速度が体感できるのかというと出来ないんだけどね と思ったところで、なんか設定変えてみたらどうなるのだろう Allocate Memory Dynamicallyというのは、メモリを必要に応じてってことだからと思って以前試したことがあったけど、なんかImDiskのときは不安定だったんだよな  AdvancedのとこにあるUse AWE Physical Memoryというのが良くわからないけど、チェックしてみたら速くなった おお、大分速くなった。なったけど・・・・なんで? これだとImDiskよりちょっと遅いくらいになるのか もしやQuickFormatととかでも変わるのか?と思ったけどそこまでやる気も無かったので放置。速くなるわけないよね。 後は圧縮とか、取り外しメディアとかだし。   最近の性能の良いSSDのおかげで RAM DISKというものの存在意義が薄れちゃったね まあそれでとにかく速度を稼ぎたいぜって人は SoftPerfect RamDiskでも使ってください 昔はPrimo Ramdisk使ってました。当時使ってたけどなかなか良かった。 当時SSD無茶苦茶高かったし。 今はほぼ無用になってしまったが・・・ 未だにスタンダード版は8GBまでなんだな キャッシュ領域にしたいなら大人しく余ってるSSDを使った方がいいんじゃ無いかって気がするけど  おしまい

.NET MAUI Visual Studioをクリーンインストールしたら、えるいーだーがビルドできなくなった

死ぬかと思った ホントマジで PCをクリーンインストールしたので、さあ、えるいーだーを一発ビルドしよう・・ とおもったらば、  資産ファイル 'D:\XXXX\YYYY\ZZZZ\obj\project.assets.json' に 'net8.0-windows10.0.22621.0' のターゲットがありません。 復元が実行されたことと、'net8.0-windows10.0.22621.0' が プロジェクトの TargetFrameworks に含まれていることを確認してください。 なんて言われちゃうじゃありませんか   copilotちゃんに聞いて dotnet restore とか   dotnet nuget locals all --clear dotnet restore とかやっても全く効果無し  大体ターゲットフレームが無いって何だよ インストールされてるだろうが なんて思っていました   そういえばふと思いました iOSをビルド対象外にしてたっけ まさかねぇ iOSをビルド対象に追加してビルド ビルド通りました  ふざけてんのかーっ なんだよそれ・・・ 散々WindowsやAndroidのターゲットが無いとか行っておいて iOSをビルド対象にしたら通っちゃうのかよ ではその後iOSをビルド対象から外したら? 無事でした 勘弁してくださいよ 泣きそうでしたよ 明日からはなんとかなりそう・・・だけど、もうこんな時間かよ   おしまい

再びRAM DISK(ImDisk)

PCに色々ゴミがたまってきたのでクリーンインストールし直した ・・ので、とりあえずある程度インストールが終わったので RAMディスクのベンチを取ってみた   RAM DISKを使ってみた(使ったのはImDisk)   blog.mazepin-led.com 前回はこんな感じでベンチ取ってたのよね 今回はこんな感じ 最初はなんか誤差のレベルだなーと思ってたけど、RND4KのWRITEが結構早くなってました CristalDiskMarkもImDiskも今日時点での最新版で試したので、まあ何か変わってるんだろう BIOSだってOSのバージョンだって変わってるしな システムディスクのSSDも変わってますがRAMやらCPUやらは当時のまま   一生懸命頑張っているCPUの様子がこれ。 基本、RAMディスクってPIO転送だからCPUのパワーをがっつり持って行ってしまう おしまい  

.NET MAUI INotifyPropertyChangedではまった話

INotifyPropertyChangedではまった のでその備忘録として まあ言われてみればその通りなんだけどさ・・・   何に嵌まった 画面のプロパティをバインドするのに便利だぜと思っていたが、 その画面に遷移したとき、画面のプロパティを直接いじってはダメ ということ それを知らないでやったら、INotifyPropertyChangedがそれ以降効かなくなった   間違ったコード ビューモデルのソースを作成 まあタイマーを1秒ごとに起動してイベントあげるだけ public class ViewModelsBase : INotifyPropertyChanged {     System . Timers . Timer timer = new System . Timers . Timer ();     private bool _isTimerPlus = false ;     private int _timerCount = 0 ;     public ViewModelsBase ()     {         timer . Interval = 1000 ;         timer . Elapsed += ViewModelsBase_OnTimer ;         timer . Start ();     }     public bool IsTimerPlus     {         get => _isTimerPlus ;         set         {             _isTimerPlus = value ;       ...

.NET MAUI INotifyPropertyChangedを初めて使った話

INotifyPropertyChangedとは プロパティ値が変更されたときに通知するものらしい。 だったら普通にイベント作れば良いじゃん?とはならないらしい 実際の値が変更したことに対し、参照元がアクションする?的な感じ それを画面表示の自動更新のネタ元にするために使ってみました。 クラスを作ろう  何はともあれクラスを作る。今あるBLEのクラスの継承元にINotifyPropertyChangedインターフェースを指定しても良かったんだけど、何かしら画面更新のイベントを集めたかったので別クラスを作った 今回はBLEControlViewModelsというクラスを作成。継承元をINotifyPropertyChanged。 public class BLEControlViewModels : INotifyPropertyChanged {     /// < summary > アップデートが可能か true=アップデート可能なファーム false=アップデート不可能 </ summary >     private bool _isCanUpdate ;     /// < summary > 接続状態 </ summary >     private bool _isConnect ;     /// < summary >     /// アップデートが可能か true=アップデート可能なファーム false=アップデート不可能     /// </ summary >     public bool IsCanUpdate     {         get => _isCanUpdate ;         set         {             if ( _isCanUp...