我正在尝试验证我的事件是否在正确的线程上被触发。我知道链接到事件的函数发生在它们被触发的同一个线程上,但如果它们实际上是在正确的线程上被触发,我会有点困惑。
我有一个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上线程,因为那是对象的构造和事件的设置?