何のための構文で申し込みによるオブジェクトの静的イベントユー?

StackOverflow https://stackoverflow.com/questions/2335623

質問

登録-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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top