我有一个GUI,允许用户将标签页添加到标签控件。每次用户添加选项卡时,都会在新选项卡上放置用户控件。用户控件上有一个后台工作程序,以及其他几个控件。我的问题是:我可以访问特定于标签页的背景工作者吗?换句话说,我可以告诉程序使用选项卡索引0上找到的backgroundworker来运行一个进程,然后告诉后台工作者在选项卡索引1上运行一个不同的进程吗?
答案 0 :(得分:0)
也许你可以有一个BackgroundWorkers列表,每次你添加一个标签你都会在c#
中创建一个这样的新工人public class Foo : Form{
List<BackgroundWorkers> bgs;
......
void AddNewTab(DoWorkEventHandler bw_DoWork, RunWorkerCompletedEventHandler bw_RunWorkerCompleted, ProgressChangedEventHandler bw_ProgressChanged)
{
//bgs was initialized in the ctr
var bw = new BackgroundWorker();
bw.WorkerReportsProgress = true;
bw.WorkerSupportsCancellation = true; ;
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
bgs.Add(bw)
}
.....
void ExecuteBackgroundWorker(int tabindex)
{
bgs[tabindex].RunWorkerAsync();
}
void ExecuteBackgroundWorkerTask(int tabindex, DoWorkEventHandler bw_DoWork)
{
bgs[tabindex] += new DoWorkEventHandler(bw_DoWork);
bgs[tabindex].RunWorkerAsync();
}
}
类似的东西.....但翻译成vb.net ....