C# 如何从backgroundworker C返回多个结果#
我的Backgroundworker从路径检索和计算,我需要返回字符串数组和double数组。如何将它们打包在一起? 我知道返回的结果如下:C# 如何从backgroundworker C返回多个结果#,c#,return,backgroundworker,C#,Return,Backgroundworker,我的Backgroundworker从路径检索和计算,我需要返回字符串数组和double数组。如何将它们打包在一起? 我知道返回的结果如下: private void bgw_DoWork(object sender, DoWorkEventArgs e) { int result = 2+2; e.Result = result; } private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEv
private void bgw_DoWork(object sender, DoWorkEventArgs e)
{
int result = 2+2;
e.Result = result;
}
private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
int result = (int)e.Result;
MessageBox.Show("Result received: " + result.ToString());
}
我也尝试过使用tuple,但我的软件无法识别它,我使用的是C#2008expressedition
如何将两种不同类型的数组打包在一起?创建一个自定义类并将其传递给结果
public class MyClass
{
public MyClass(string[] strings, double[] doubles)
{
this.Strings = strings;
this.Doubles = doubles;
}
public string[] Strings {get;set;}
public double[] Doubles {get;set;}
}
private void bgw_DoWork(object sender, DoWorkEventArgs e)
{
MyClass result = new MyClass(new string[] {"a", "b"}, new double[] {1d, 2d});
e.Result = result;
}
private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MyClass result = (MyClass)e.Result;
// process further
}
创建数据传输类型。例如:
class MyResult //Name the classes and properties accordingly
{
public string[] Strings {get; set;}
public double[] Doubles {get; set;}
}
private void bgw_DoWork(object sender, DoWorkEventArgs e)
{
//Do work..
e.Result = new MyResult {Strings =..., Doubles = ... };
}
private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MyResult result = (MyResult)e.Result;
//Do whatever with result
}
创建一个专为保存结果而设计的类
public class BackgroundWorkResult
{
public List<string> StringList {get;set;}
public List<int> IntList {get;set;}
}
公共类后台工作结果
{
公共列表StringList{get;set;}
公共列表IntList{get;set;}
}
并在分配e.Result=newbackgroundworkresult(){…}时将结果包装在其中代码>
一般来说,为每种后台工作人员(如事件处理人员)创建一个类是很好的做法。这样,如果在下一版本的代码中,您需要从BackgroundWorker返回另一个信息,您只需向结果类添加属性。我可以问一下,{get;set}是创建类时的固定格式吗?@wen它用于创建。您也可以使用字段,但也可以使用结构而不是类。