2011-10-07 27 views
3

我正在使用WMI的Win32_NetworkAdapterConfiguration類,EnableStatic方法來設置用於測試的Loopback網絡適配器的靜態IP。我注意到當有可見的屬性表時,操作系統會取出一個鎖。當用戶使用更改解除工作表時,事情會凍結,直到更新完成。如何在修改網絡適配器屬性時保證獨佔訪問

如何確保我的程序在C#和Windows UI之間獨佔訪問?

回答

2

我認爲Win32_NetworkAdapterConfiguration類的EnableStatic方法已經獲得一個排它鎖來更改網絡適配器設置。微軟知識庫文章引導我得出這個結論Microsoft KB。 還有一個稱爲INetCfgLock的COM接口,您可以使用它來獲取更改網絡適配器設置的排他鎖。要獲得鎖,請使用INetCfgLock::AcquireWriteLock方法。

BEGIN編輯:

下面是該項目中的鏈接codeproject這說明使用INetCfgLock COM接口和C#中的INetCfgLock::AcquireWriteLock

END編輯

希望,這有幫助。

+0

你會如何在C#中做到這一點? – GregC

+0

關於推論的話題:聽起來好像修復後的EnableStatic不再取出鎖,只是爲了讓用戶應用程序不會崩潰。 – GregC

+0

@GregC:我已經更新了我的答案,並鏈接到了一個codeproject C#示例。 – Hans