什么线程被我的事件被解雇了?

时间:2014-01-17 15:23:48

标签: c# multithreading events backgroundworker

我正在尝试验证我的事件是否在正确的线程上被触发。我知道链接到事件的函数发生在它们被触发的同一个线程上,但如果它们实际上是在正确的线程上被触发,我会有点困惑。

我有一个Form BackgroundWorker和一个名为Uploader的自定义类对象Form。这个Uploader对象是在我的扩展Form类的构造函数中构造的,如下所示:

public partial class UploadProgress : Form
{
    private BackgroundWorker uploadWorker;
    private Uploader uploader;

    public UploadProgress(S3Info info, List<System.IO.DirectoryInfo> directoryList = null )
    {
        InitializeComponent();
        this.uploadWorker = new BackgroundWorker();
        //Configuration of BackgroundWorker & EventHandlers removed for simplicity of example

        uploader = (directoryList != null) ? new Uploader(info, directoryList) : new Uploader(info);
    }

Uploader对象可以根据上传进度触发两个不同的事件。在form_load()事件方法中,我通过Uploader方法将BackgroundWorker对象作为参数传递到RunWorkerAsync(object)

现在我的问题是:由于Uploader对象长时间运行的方法在BackgroundWorker的DoWork方法中触发事件是在BackgroundWorker的线程上发生的事件,或者它们是否发生在UI上线程,因为那是对象的构造和事件的设置?

0 个答案:

没有答案