macOS .NET MAUI タイマーを使った時計表示

MAUIアプリ タイマーで時計表示

Visual Studio 17.3 Preview版 MAUIプロジェクトで Timerを使い XAMLのLabelに時計を表示する。

Visual Studio for 2022 Macは、下↓のURLからダウンロードできます。

https://visualstudio.microsoft.com/ja/vs/mac/

Preview版は、 現時点バージョン17.3で MAUIアプリの プロジェクトが作成できます。

新規プロジェクト作成 .NET MAUI アプリ
新規プロジェクト作成 .NET MAUI アプリ

メインの XAML画面で「タイマーを使った時計表示」

MAUIアプリプロジェクトを作成すると、デフォルトで下のアプリが実装されています。

初期実装されているアプリ

この画面の「Hello, World!」Label部分を時計表示に変えるコードです。

上記の画面は「MainPage.xaml」です。

下記は、「MainPage.xaml.cs」です。

コンストラクタにタイマーとイベントを追加しています。

public partial class MainPage : ContentPage
{
	int count = 0;

	public MainPage()
	{
		InitializeComponent();
        new Timer((state) =>
        {
            try
            {
                Dispatcher.Dispatch(() =>
                {
                    try
                    {
                        Label1.Text = DateTime.Now.ToString();
                        SemanticScreenReader.Announce(Label1.Text);//これいらん?
                    }
                    catch (Exception _e)
                    {
                        Console.WriteLine(_e.Message);
                    }
                });
            }
            catch (Exception _e1)
            {
                Console.WriteLine(_e1.Message);
            }
        }, null, new TimeSpan(0), new TimeSpan(0, 0, 1));
    }
}

TimerSystem.Threading.Timerです。

この、Timerイベントから 直接 Label1.Textの値を 変更すると ぶつかります。

イベント内の、Dispatcher.Dispatch()の 中で Label1.Textの値を変更しています。

macOS アプリ削除 で残ってしまうゴミ保存データ削除

macOS アプリ削除 で残ってしまうゴミ保存データ削除

macOS上の、 アプリを削除しても 次に同じアプリをインストールした場合 保存されたデータが 残っていて 以前の設定でアプリが使えてしまうことがあります。

これは、 アプリが macOS内に 何かデータを書き込んでいることになります

その一つが、 UserDefaults です。

この機能を使えば、 アプリのプログラム内部で 簡単にデータ保存利用できます。

アプリの UserDefaults データを 削除する方法です。

UserDefaultsの保存場所

各ユーザーカレントの中に、 「Library」という アプリのデータを保存するフォルダが隠されています。 この「Library」はターミナルから確認することが可能です。

open ~/Library
open ~/Library

上記コマンドで Finderの[ライブラリ]が 開きます。

Finder ライブラリ

その中に [Preferences]フォルダがあり、 そのフォルダを開くと アプリで保存したplistがあります。

[Preferences]フォルダ
[Preferences]フォルダ

たくさんの plistが入っています。 その中から要らないアプリ名を探します。

そのままゴミ箱ではなく、ターミナルから下記のコマンドを実行し削除します。

ターミナルから defaultsコマンドで 保存情報削除

defaults delete com.xxxxxxx

上記で削除する場合 plist拡張子は なしです

これで アプリの UserDefaultsは削除できました。

削除せず確認だけ行う場合は、ターミナルから 下記のコマンドを実行します。

defaults read com.xxxxxxx

このコマンドで、保存内容を確認することもできます。

2022 MJELD TECHNOLOGIES. ALL RIGHTS RESERVED