结构属性不可用

Noc*_*ceo 0 c# struct windows-forms-designer winforms

我有一个包含五个属性的结构,它们在按钮_click方法上设置(使用Windows窗体设计器).设置完毕后,运行bacground worker,使用.RunWorkerAsync.然后_DoWork在后台worker 的方法中使用该struct .

但是,当我在_ DoWork方法中调用struct 时,struct all的属性值为null.谁能告诉我我做错了什么?我是C#的新手.

定义结构

struct 
FtpSetting
{
  public String Server { get; set; }
  public String Username { get; set; }
  public String Password { get; set; }
  public String FileName { get; set; }
  public String FullName { get; set; }
}
FtpSetting _inputParameter;
Run Code Online (Sandbox Code Playgroud)

按钮点击功能(仅相关代码)

FileInfo fi = new FileInfo(ofd.FileName);
_inputParameter.Server = txtServer.Text;
_inputParameter.Username = txtServer.Text;
_inputParameter.Password = txtServer.Text;
_inputParameter.FileName = fi.Name;
_inputParameter.FullName = fi.FullName;
backgroundWorker.RunWorkerAsync();
Run Code Online (Sandbox Code Playgroud)

DoWork功能(仅限相关代码)

string filename = ((FtpSetting)e.Argument).FileName; // Code crashes here
string fullname = ((FtpSetting)e.Argument).FullName; // ...But all the below values
string username = ((FtpSetting)e.Argument).Username; // ...Are null as well :-(
string password = ((FtpSetting)e.Argument).Password;
string server = ((FtpSetting)e.Argument).Server;
Run Code Online (Sandbox Code Playgroud)

Ren*_*ogt 6

什么是null这里没有struct的特性,但Argument都在一起.

你需要调用带有RunWorkerAsync(object argument)参数的重载:

backgroundWorker.RunWorkerAsync(_inputParameter);
Run Code Online (Sandbox Code Playgroud)