【发布时间】:2023-03-28 04:35:02
【问题描述】:
我知道这个问题已经被问过好几次了,我花了一整天的时间试图理解其他答案,但由于我对 C# 和 WPF 很陌生,到目前为止没有任何帮助。我会尽可能多地解释我的确切问题,以便直接帮助我。
在我的 MainWindow.xaml 中,我有一个进度条和一些按钮,开始一个新线程和一个长计算:
<ProgressBar Height="....... Name="progressBar1"/>
<Button Content="Button" Name="button1" Click="button1_Click" />
现在在我的 MainWindow.xaml.cs 中:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
Thread thread = new Thread(new ParameterizedThreadStart(MyLongCalculation));
ParameterClass myParameters = new ParameterClass();
thread.Start(myParameters);
}
public void MyLongCalculations(object myvalues)
{
ParameterClass values = (ParameterClass)myvalues;
//some calculations
}
}
public class ParameterClass
{
//public variables...
}
现在我必须在我的方法 MyLongCalculations 中包含一些东西,它将不断更新progressBar1。但是,我就是无法让它工作。
我知道这一切都很简单,但不幸的是,这是我目前使用 C# 的水平,所以我希望答案不要太复杂且尽可能详细。
【问题讨论】:
-
如果您阅读了很多并尝试了很多,您应该在您的问题中详细说明这一点。比如,你读了什么,你尝试了什么,结果是什么,怎么不是你想要的。
-
你试过
Dispatcher.BeginInvoke()吗? -
是的,现在我有,我必须先阅读很多内容并查看答案。现在它可以与 Dispatcher 和 BackgroundWorker 一起使用。
标签: c# wpf multithreading progress-bar