2011-12-27 13 views
2

我從很多地方使用相同的功能...相同功能運行並行將覆蓋值?

例如以下功能

Public Sub getUser(ByVal Name as string) 
     dim myName=Name 
     ....... 
     insert(myName) 
End Sub 

我使用這麼多地方這個功能...... 我有疑問,應此功能覆蓋此MYNAME最新函數調用的值?

假設我調用getUser(「ABC」),所以myName的值現在是ABC現在突然全部調用getUser(「XYZ」)所以在插入(myName)時它會插入(「ABC」)或插入(「XYZ」 )?

我需要它來進行插入(「ABC」),然後插入(「XYZ」)

回答

1

您可以使用鎖定,以確保只有一個線程做一些事情在同一時間

//declare an object for locking 
Dim lockObjcect As New [Object]() 

    Public Sub getUser(ByVal Name as string) 
     SyncLock lockObjcect 
      dim myName=Name 
       ....... 
      insert(myName) 
     End SyncLock 
    End Sub 

隨着鎖定,現在只有一個線程就能SyncLock and End SyncLock之間執行的代碼,這意味着首先ABC將被插入,然後XYZ會被插入

+0

感謝哈里斯..怎麼在someLock提供上述 – samirprogrammer 2011-12-27 07:52:24

+0

這裏'索姆e'類表示任何對象。任何對象都可以用於鎖定目的。爲鎖定目的聲明單獨的對象是一種很好的做法。只需創建對象類的對象。查看更新回答 – 2011-12-27 08:23:14

+0

感謝肉湯,但我問的應該發生?它會覆蓋與否? – samirprogrammer 2011-12-27 08:44:12