2011-03-31 58 views
1

如果我有一個後臺工作,做在某些任務做工作設置RunWorkerCompleted值

String val= getVal("Val"); 
    byte[] b = (byte[])e.Argument; 

    b = getData.FromPlace(val); 

如何傳遞的vakue B向runworkercompleted方法?

回答

0

您可以使用實例變量。將聲明放在DoWork事件定義的上方。

private byte[] b; 
4

你可以使用封閉

void Main() 
{ 

    var bw = new BackgroundWorker(); 

    byte[] b; 

    bw.DoWork += (sender, args) => { 

     b = DoStuff(); 
    }; 
} 

byte[] DoStuff() { 

    String val= getVal("Val"); 
    byte[] b = (byte[])e.Argument; 

    b = getData.FromPlace(val); 

    return b; 
} 

你也可以在參數對象的情況下使用返回結果屬性。我認爲這樣可以提供更大的靈活性。

void Main() 
{ 
    var bw = new BackgroundWorker(); 

    bw.DoWork += (sender, args) => { 

     args.Result = DoStuff(); 
    }; 

    bw.RunWorkerCompleted += (sender, args) => { 
     var result = args.Result as byte[]; 
    }; 

    bw.RunWorkerAsync(); 
} 

byte[] DoStuff() { 
    return new byte[10]; 
}