WPF线程背景工作者问题

时间:2015-01-30 17:25:26

标签: wpf multithreading backgroundworker

我有两个不同的后台线程,它在我的WPF应用程序中做了类似的事情,但在不同的时间。他们现在都是独立的背景工作者。

1)启动应用程序时,第一个线程会运行,它会将连接的打印机中的所有图像下载到PC位置。

2)当我使用点击我的应用程序中的某个链接时,第二个线程会做同样的事情。

由于两个工作人员都是独立的,即使第一个线程的下载过程仍在运行,如果用户点击链接,第二个线程也会开始工作

我想做的是,当用户点击第二个帖子时,有什么方法可以了解第一个帖子的状态吗?我的意思是,如果我知道第一个线程正在做它的工作,那么我不想甚至开始第二个线程。当第一个线程被其他原因取消时,我只需要第二个线程。

我听说过Mutex,但我不知道它是如何工作的。如果你知道如何处理这个问题,请分享你的想法和一些例子。

由于

Dee

1 个答案:

答案 0 :(得分:0)

我建议您让管理员处理后台线程。也许是这样的:

interface IDownloadManager
{
    bool IsRunning {get; }
    void Start();
    void Stop();

    event Action DownloadStarted;
    event Action DownloadCompleted;
    event Action<Image> ImageDownloaded;
}

该经理应该处理背景工作者的开始/停止和监控。这样,您就不会启动多个下载过程。