何のための構文で申し込みによるオブジェクトの静的イベントユー?
-
22-09-2019 - |
質問
登録-ObjectEvent 見たオブジェクトインスタンスに必要なパラメータ InputObject.何を語るオブジェクトの静的(共有 イベント?
更新:正しい構文 TimeChanged:
$systemEvents = [Microsoft.Win32.SystemEvents]
$timeChanged = Register-ObjectEvent -InputObject $systemEvents
-EventName 'TimeChanged' -Action { Write-Host "Time changed" }
残念ながら、SystemEventsなシグナルに ユー伊勢.こちらのサンプルを用いたオブジェクトのstaicイベントがあ
$networkInformation = [System.Net.NetworkInformation.NetworkChange];
$networkAddressChanged = Register-ObjectEvent -InputObject $networkInformation
-EventName 'NetworkAddressChanged'
-Action { Write-Host "NetworkAddressChanged event signaled" }
解決
を割り当てた場合は、静止型変数へのご加入の静的イベント。
例えば:
$MyStaticType = [MyStaticNamespace.MyStaticClass]
Register-ObjectEvent -InputObject $MyStaticType -EventName MyStaticEvent -Action {Write-Host "Caught a static event"}
その静的イベントタイプがあり、利用できる乗員の静的スイッチ
[MyStaticNamespace.MyStaticClass] | get-member -static -membertype event
編集: かったので通知しようとした場合にアクセス"Microsoft.Win32.SystemEvents]やイベントの必要がある走り高速(Vista以上)にアクセスするには、メッセージ
他のヒント
スティーブンさんは、この(彼の代わりに投票)に投票する必要はありませんので、正しい答えを得ました。私はちょうど人々があなたが火に簡単ですBCLの静的なイベントを見つける必要がないように、静的なイベントで遊ぶために使用できるサンプルスニペットを投稿したかったです。 : - )
$src = @'
using System;
namespace Utils {
public static class StaticEventTest
{
public static event EventHandler Fired;
public static void RaiseFired()
{
if (Fired != null)
{
Fired(typeof(StaticEventTest), EventArgs.Empty);
}
}
}}
'@
$srcId = 'Fired'
Add-Type -TypeDefinition $src
Unregister-Event -SourceIdentifier $srcId -ea 0
$id = Register-ObjectEvent ([Utils.StaticEventTest]) Fired `
-SourceIdentifier $srcId -Action {"The static event fired"}
[Utils.StaticEventTest]::RaiseFired()
while (!$id.HasMoreData) { Start-Sleep -Milliseconds 250 }
Receive-Job $id
所属していません StackOverflow