我有一個結構有五個屬性,它們在按鈕_click
方法(使用Windows窗體設計器)上設置。設置完這些之後,便可使用.RunWorkerAsync
運行免費工作人員。該結構然後在後臺工作者的_DoWork
方法內部使用。結構屬性不可用
但是,當我調用_ DoWork
方法中的結構體時,結構體的所有屬性都具有值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;
按鈕點擊功能(僅適用於相關的代碼)
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();
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;
這很可能是你需要一個類,而不是一個結構,其僅在非常特殊的條件合適(和不發揮好與可變性)(https://msdn.microsoft.com/en-us/library/ms229017(v=vs.110).aspx) –