c# - 另一个后台 worker

标签 c# wpf multithreading backgroundworker

我看过msdn以及关于如何使用后台 worker 的堆栈交换的类似问题。

基本上,我的函数上传程序完成了实际的工作,但我想要一个线程来更改 ui 的元素(进度条等)以及当我发送事件以更改进度时。我在下面尝试过(粗略编辑),它不起作用,并且程序似乎在调用 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}

然后是苦差事,它似乎永远不会到达这里。

    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.

最佳答案

您是否为您的事件处理程序订阅了该事件?

BackgroundWorker backgroundUpload = new System.ComponentModel.BackgroundWorker();
backgroundUpload.DoWork += backgroundUpload_DoWork;

关于c# - 另一个后台 worker ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13972082/

相关文章:

c# - 如何在unity c#中围绕玩家旋转相机

c# - 将多个ViewModel用于RibbonWindow(带有或不带有Caliburn Micro)

wpf - 如何将按钮的DataContext更改为父级DataContext?

java - Jdbc DataSource多线程不释放连接

java - 如何为jmeter中的每个线程发送唯一数据

.net - 如何减少 WPF 应用程序的内存使用量

c# - 将 CaSTLe.Windsor 与 SSW Data Onion 一起用于 Entity Framework 6

使用 ASP.NET MVC 4 的 C# Rest Web 服务

c# - 使用响应式(Reactive)扩展来配对请求和响应

java - WPF是不是一个了不起的东西?