我已经看过msdn以及有关如何使用后台工作人员的类似堆栈交换问题。基本上,我的函数上传程序做了实际的工作,但我想要一个线程来改变它的元素(进度条等),当我发送事件的进度改变。我试过的是以下(严厉编辑),它不起作用,并且在调用runworkerasync之后该程序似乎被切断。是否有一些简单的错误或将我的命令发送到另一个线程是错误的?另一个后台工作人员
BackgroundWorker backgroundUpload = new System.ComponentModel.BackgroundWorker();
第一位是呼叫:
if (backgroundUpload.IsBusy != true)
{
backgroundUpload.RunWorkerAsync(work);
// a command here for debug purposes (eg a message box) will run
}
else
{ //it doesn't go here, this isn't the error}
然后DoWork的,它似乎永远不会来到这里。
private void backgroundUpload_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
e.Result = UploadProgram((Workload)e.Argument, worker, e); //workload is one of my enums
}
似乎从来没有到过这里。
bool UploadProgram(Workload work, BackgroundWorker worker, DoWorkEventArgs e)
{
}
//also there is progress changed and run worker complete.
我猜你的电话,但你必须在DoWork的事件委托的减速?即backgroundUpload.DoWork + = 新的DoWorkEventHandler(UploadProgram); –
那很简单。干得好,每个人都有不同的感受。 –