我有一个用于过程控制应用程序的 dll 程序集,我在我的内部使用 load电源外壳 script.
该DLL包含我需要使用的委托类型,委托名称是:
"X.Y.Delegate"
我在该 DLL 中有另一个方法,应该这样调用:
Method( delegatetype CallbackMethod)
所以,我需要:
在我的脚本中定义一个委托类型"X.Y.Delegate"
例如$MyDelegate
定义一个回调方法,以便在触发流程事件时调用它”
注意:如果我的问题看起来很愚蠢,我很抱歉,我是一个绝对的初学者。
Update:
在阅读您的评论并更仔细地阅读您的问题后,我认为您可能希望利用异步事件处理。下面是一个监听事件直到超时然后退出的示例。此示例假设您可以更改程序集以添加事件。
生成事件的类:
namespace ClassLibrary1
{
public class Class1
{
public event EventHandler SomeEvent;
protected void OnSomeEvent(EventArgs e)
{
var someEvent = SomeEvent;
if (someEvent != null)
{
SomeEvent(this, e);
}
}
public void SomeMethod()
{
Task.Run(() =>
{
for (int i = 0; i < 3; i++)
{
Thread.Sleep(3000);
OnSomeEvent(EventArgs.Empty);
}
});
}
}
}
电源外壳:
# Load up your .net assembly
add-type -path .\Class1.cs
$x = new-object ClassLibrary1.Class1
$sourceIdentifier = "SomeEvent"
# Register event
$eh = Register-ObjectEvent -SourceIdentifier $sourceIdentifier -InputObject $x -EventName SomeEvent
$x.SomeMethod()
while ($true)
{
Write-Host "Waiting for event..."
$event = Wait-Event -SourceIdentifier $sourceIdentifier -Timeout 10
if ($event -eq $null)
{
Write-Host "No event received for 10 seconds."
break
}
# Do processing here
Write-Host "Processing event..."
$event
# Remove event from queue
Remove-Event -SourceIdentifier $sourceIdentifier
}
Unregister-Event -SourceIdentifier $sourceIdentifier
Write-Host "Done processing events."
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)