Q: 별도의 클래스에서 실행되는 작업자 스레드에서 WPF UI를 업데이트하는 방법은 무엇입니까?
A: 다른 UI에서 UI를 업데이트하려면 thread:
이벤트 기반 통신:
사용예시 이벤트:
// Main window class private void startCalc(object sender, RoutedEventArgs e) { // Create a new worker class instance CalcClass calc = new CalcClass(); // Register event handler to receive UI update notifications calc.ProgressUpdate += (s, e) => { Dispatcher.Invoke((Action)(() => { /* Update UI here */ })); }; // Start the worker thread Thread calcThread = new Thread(new ParameterizedThreadStart(calc.TestMethod)); calcThread.Start(input); } // Worker class public class CalcClass { public event EventHandler ProgressUpdate; public void TestMethod(object input) { // Perform calculations // Raise event to notify UI update if (ProgressUpdate != null) ProgressUpdate(this, new EventArgs()); } }
추가 참고:
작업을 사용하는 대체 솔루션:
.NET 4.5 이상에서, Task와 함께 비동기 프로그래밍을 사용하여 UI를 더 깔끔하고 효율적으로 업데이트할 수도 있습니다. way.
작업을 사용하여 업데이트된 코드:
// Main window class private async void buttonDoCalc_Clicked(object sender, EventArgs e) { // Create a new worker class instance CalcClass calc = new CalcClass(); // Start the asynchronous calculation await calc.CalcAsync(); } // Worker class public class CalcClass { public async Task CalcAsync() { // Perform calculations // Update UI using Dispatcher.Invoke Dispatcher.Invoke((Action)(() => { /* Update UI here */ })); } }
위 내용은 다른 클래스의 별도 스레드에서 WPF UI를 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!