2011-10-07 4 views
3

J'utilise la classe Win32_NetworkAdapterConfiguration de WMI, méthode EnableStatic pour définir les adresses IP statiques d'une carte réseau Loopback à tester. J'ai remarqué que le système d'exploitation prend un verrou quand il y a une feuille de propriétés visible. Lorsque l'utilisateur rejette la feuille avec des modifications, les choses gèlent jusqu'à la fin de la mise à jour.Comment garantir un accès exclusif lors de la modification des propriétés de la carte réseau

Comment puis-je garantir un accès exclusif entre mon programme en C# et l'interface utilisateur Windows?

Répondre

2

Je pense que la méthode EnableStatic de la classe Win32_NetworkAdapterConfiguration acquiert déjà un verrou exclusif pour modifier les paramètres de la carte réseau. Un article de base de connaissances de Microsoft m'a conduit à cette conclusion Microsoft KB. Il existe également une interface COM appelée INetCfgLock que vous pouvez utiliser pour acquérir un verrou exclusif pour modifier les paramètres de la carte réseau. Pour acquérir le verrou, utilisez la méthode INetCfgLock::AcquireWriteLock.

BEGIN EDIT:

Voici un lien vers le projet sur codeproject qui montre l'utilisation de l'interface INetCfgLock COM et le INetCfgLock::AcquireWriteLock en C#.

END EDIT

Espérons que cela vous aide.

+0

Comment le feriez-vous en C#? – GregC

+0

Sur le thème de l'inférence: il semble qu'après le correctif EnableStatic ne retire plus de verrou, juste pour que l'application utilisateur ne plante pas. – GregC

+0

@GregC: J'ai mis à jour ma réponse avec un lien vers un exemple de codeproject C#. – Hans

Questions connexes