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)
什么是null这里没有struct的特性,但Argument都在一起.
你需要调用带有RunWorkerAsync(object argument)参数的重载:
backgroundWorker.RunWorkerAsync(_inputParameter);
Run Code Online (Sandbox Code Playgroud)