我希望能够访问C#DLL中的事件,以便我可以将进度条显示为 执行文件分析 - DLL由第三方使用VB.Net编写。
详细
C#FileAnaysis.DLL
包含一个包含2个公共子
的公共类FileManagerpublic void ProgAnalysis(string fileName)
public void ProgAnalysis(string fileName, ProgressChangedEventHandler progressChangedEventHandler, RunWorkerCompletedEventHandler runWorkerCompletedEventHandler)
如何访问Vb.Net中第二个子生成的事件?
答案 0 :(得分:1)
您需要传递与这些代理匹配的方法。如果我不得不猜测我会说它在幕后使用BackgroundWorker。
所以你可以这样做。
void Main {
ProgAnalysis(@"c:\test.txt",
delegate(object sender, ProgressChangedEventArgs e) {
// Do something
},
delegate(object sender, RunWorkerCompletedEventArgs e) {
// Do something else
});
}
只是猜测委托签名。当然,您可以使用lambda或单独的方法而不是匿名委托,具体取决于您需要做什么。
该库是用VB.NET编写的。
答案 1 :(得分:1)
考虑到该方法接受ProgressChangedEventHandler
和RunWorkerCompletedEventHandler
,我会打赌你使用这些类型的委托并将它们传递给方法;那么它会在适当的时候给他们打电话。
例如,以下方法匹配这些委托类型的签名:
' Matches ProgressChangedEventHandler '
Sub OnProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs)
' Do something. '
End Sub
' Matches RunWorkerCompletedEventHandler '
Sub OnRunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs)
' Do someting. '
End Sub
鉴于上述方法,您可以将它们传递给ProgAnalysis
,如下所示:
ProgAnalysis("fileName", _
AddressOf OnProgressChanged, _
AddressOf OnRunWorkerCompleted)