C# WINDOWS MAUI專案 建立背景常駐執行序並且可以更新UI
C# WINDOWS MAUI專案 建立背景常駐執行序並且可以更新UI
資料來源:chatGPT(c# maui thread ui example)
GITHUB: https://github.com/jash-git/MAUI_WinAPI_Object_test/tree/main/Code/03
Code:
public IDispatcherTimer timmer { get; set; }
public Thread thread;
public bool blnStop = false;
public MainPage()
{
InitializeComponent();
/*
//---
//Timer Mode
//https://learn.microsoft.com/en-us/answers/questions/1207012/how-to-stop-device-starttimer
timmer = Application.Current.Dispatcher.CreateTimer();
timmer.Interval = new TimeSpan(0, 0, 0, 0, 100);//天/時/分/秒/毫秒
timmer.Tick += Timmer_Tick;
timmer.IsRepeating = true;//the timer will keep recurring, you can set false
timmer.Start();
//---Timer Mode
//*/
// 在新執行緒中執行工作
thread = new Thread(ThreadFun);
thread.Start();
}
private void Timmer_Tick(object sender, EventArgs e)
{
labtime.Text = DateTime.Now.ToString("HH:mm:ss");
}
private void ThreadFun()
{
// 模擬一些耗時的工作
do
{
// 更新使用者介面 (UI) 元素
Device.BeginInvokeOnMainThread(() =>
{
// 在這裡更新 UI 控制項
labtime.Text = DateTime.Now.ToString("HH:mm:ss");
});
Thread.Sleep(1000);
} while (!blnStop);
}
chatGPTCode:
using System;
using System.Threading;
using Microsoft.Maui.Controls;
namespace MauiThreadUIExample
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void StartThreadButton_Clicked(object sender, EventArgs e)
{
// 在新執行緒中執行工作
Thread thread = new Thread(UpdateUI);
thread.Start();
}
private void UpdateUI()
{
// 模擬一些耗時的工作
Thread.Sleep(3000);
// 更新使用者介面 (UI) 元素
Device.BeginInvokeOnMainThread(() =>
{
// 在這裡更新 UI 控制項
StatusLabel.Text = "工作完成!";
});
}
}
}