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 = "工作完成!"; }); } } }