.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]);
    }