2014-04-12 81 views
0

在ASP.Net頁面中使用Parallel.Invoke方法時,訪問UI控件屬性是否安全,如下面的代碼所示?在Parallel.Invoke內訪問ASP.NET控件屬性

到目前爲止,我還沒有遇到任何問題,但不知道如果我失去了一些東西。我在下面的代碼中訪問2個文本框的Text屬性 - txtAge和txtName。

protected void Page_Load(object sender, EventArgs e) 
    { 
    Parallel.Invoke(() => 
    { 
     try 
     { 
      SetEmployeeName(txtName.Text); 
      System.Threading.Thread.Sleep(10000); 
     } 
     catch (Exception e1) 
     { 
     } 
    }, // close first Action 

     () => 
     { 
      try 
      { 
       SetEmployeeAge(int.Parse(txtAge.Text), txtName.Text); 
       System.Threading.Thread.Sleep(10000); 
      } 
      catch (Exception e2) 
      { 
      } 
     } // close second Action 
    ); 
} 

EDIT 1:

似乎因爲TextBox控件的文本屬性不能保證根據MSDN doumentation是線程安全上面的代碼可能不是線程安全的。

回答

1

爲什麼不把字符串存儲在本地變量中,然後在lambda表達式中使用它們,這應該是線程安全的,因爲你沒有修改它們。