2017-01-30 102 views
0

我有一個用C++編寫的項目,它具有文件複製和文件夾創建的功能。它使用C++中的Mutex.Lock()Mutex.unLock()方法。c C中的互斥鎖替換

我需要在C#中複製相同的內容。

請提出在C#中編寫C++方法mutext.Lock()Mutex.unlock()的最佳方法是什麼?

+1

有一個[互斥(https://msdn.microsoft.com /en-us/library/system.threading.mutex(v=vs.110).aspx)c#中的類 – Pikoh

+1

您正在尋找'lock'語句。或者'Monitor.Enter/Exit'。 – Matthias247

+0

我想做Mutex.Lock在C++中做的事情.. – user1947862

回答

0

C++沒有Mutex類。它有std::mutex,它提供了.lock().unlock()

因此,在C++中你有,

std::mutex mtx; 

void thr_fnc(){ 
    mtx.lock(); 
    // CS 
    mtx.unlock(); 
} 

爲了實現在C#中相同的功能,你可以做

Mutex mtx = new Mutex(); 

void thr_fnc(){ 
    mtx.WaitOne(); 
    // CS 
    mtx.ReleaseMutex(); 
} 
+0

你不應該在正常情況下使用'Mutex',因爲它比任何鎖對象上的'Monitor'或'lock'語句更重。看例如這裏:http://stackoverflow.com/questions/1164038/monitor-vs-mutex-in-c-sharp – Matthias247

+0

@ Matthias247好點。 – Zereges

+0

嗨..在C sharp,mutext.Dispose是必需的嗎?請釋放互斥鎖並釋放線程? – user1947862