【发布时间】:2019-02-14 12:31:11
【问题描述】:
我在我的窗口中创建了一个后台工作程序,它工作得很好。代码开始变长,所以我决定创建一个工作类并将我所有的逻辑都放在那里。但是,当我这样做时,我不再能够修改进度条的值。
我得到一个“在当前上下文中不存在”。我想知道这是否与这是在单独的线程上有关?我也对此进行了研究,但没有找到解释或解决方案。
我在 XAML 中公开了我的进度条,但这并没有什么不同。
这是我的主窗口代码。这里没有我能看到的问题。
using System;
using System.Collections.Generic;
using System.Windows;
using Microsoft.Win32;
using Market.BI.Workers;
namespace Market
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
File_Worker my_worker = new File_Worker();
}
}
}
这是我班级的代码。这是我无法访问进度条控件的地方。
using System;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
namespace Market.BI.Workers
{
class File_Worker
{
private BackgroundWorker worker = new BackgroundWorker();
void Worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
Stuff
}
void Worker_DoWork(object sender, DoWorkEventArgs e)
{
Stuff
}
void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Stuff
}
//Method
public File_Worker()
{
worker.DoWork += new DoWorkEventHandler(Worker_DoWork);
worker.ProgressChanged += new ProgressChangedEventHandler(Worker_ProgressChanged);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Worker_RunWorkerCompleted);
worker.WorkerReportsProgress = true;
worker.RunWorkerAsync();
fileProgressBar.IsIndeterminate = false;
}
}
}
【问题讨论】:
-
错误出现在哪一行?
-
还有:堆栈跟踪如何,完整异常如何? (
x.ToString())。 -
@keim - 这是最后一行。 fileProgressBar.IsIndeterminate = false;