因此,我将一个空字符串从主线程传递到工作线程,然后让工作线程修改该字符串,并且稍后主线程需要能够读取该字符串。当然,该字符串是通过值而不是通过引用传递的,因此无法对其进行修改。我可以通过传递一个大小为1的字符串数组来解决此问题,但是我想知道是否存在一种更干净的方法来解决此问题。
//in main thread
string errorMessage="";
System.Threading.Thread thread = new System.Threading.Thread(() => {
ProcessImport(path, errorMessage); });
thread.SetApartmentState(System.Threading.ApartmentState.STA);
thread.Start();
//in worker thread
if(errorDetected)
{
errorMesage= "some message";
}
//later in main thread
if(errorMessage!="")
{
CreateFeedbackMessageBox(erorrMesssage, 5000);
}