.net 我可以访问BackgroundWorker在完成时启动的参数吗?
启动.net 我可以访问BackgroundWorker在完成时启动的参数吗?,.net,backgroundworker,.net,Backgroundworker,启动BackgroundWorker时,我可以传递任意参数: 预期用途是将此任意参数提供给DoWork方法: private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { Object someStuff = e.Argument; ... } 现在,我希望在完整回调期间返回相同的参数: private void backgroundWorker1_RunWorkerCompleted(objec
BackgroundWorker
时,我可以传递任意参数:
预期用途是将此任意参数提供给DoWork
方法:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Object someStuff = e.Argument;
...
}
现在,我希望在完整回调期间返回相同的参数:
private void backgroundWorker1_RunWorkerCompleted(object sender,
RunWorkerCompletedEventArgs e)
{
Object myStuff = e.Argument;
...
}
除了不是e.Argument
有一个UserState
:
private void backgroundWorker1_RunWorkerCompleted(object sender,
RunWorkerCompletedEventArgs e)
{
Object myStuff = e.UserState;
...
}
但众所周知,UserState
从未设置或可设置为任何内容
那么什么是好的解决方法呢
额外阅读
BackgroundWorker bgw = null;
void main()
{
bgw = new BackgroundWorker();
bgw.DoWork += new DoWorkEventHandler(bgw_DoWork);
bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgw_RunWorkerCompleted);
}
void bgw_DoWork(object sender, DoWorkEventArgs e)
{
string otherResult = "Some Work Done";
e.Result = new Object[2] {e.Argument, otherResult};
}
void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//writes the argument;
Console.WriteLine(((object[])e.Result)[0]);
}
你的幕后工作人员能把它放在结果里吗?该死。我不停地在谷歌上搜索答案,发现了这样一个问题:“嘿,这正是我想要的!+1”“你不能为自己的帖子投票。”“哦,好吧:()严格地说,我猜Blorgbeard比你抢先一步。但他没有将其作为答案,也没有包含示例代码。+1和接受当我懒得键入答案时,我键入一条注释并向上投票最终答案:P
BackgroundWorker bgw = null;
void main()
{
bgw = new BackgroundWorker();
bgw.DoWork += new DoWorkEventHandler(bgw_DoWork);
bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgw_RunWorkerCompleted);
}
void bgw_DoWork(object sender, DoWorkEventArgs e)
{
string otherResult = "Some Work Done";
e.Result = new Object[2] {e.Argument, otherResult};
}
void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//writes the argument;
Console.WriteLine(((object[])e.Result)[0]);
}