Calling a C# DLL from PowerBuilder
本文关键字:from PowerBuilder DLL Calling | 更新日期: 2023-09-27 18:26:15
好吧,我有一个PowerBuilder应用程序。我可以制作一个DLL文件c#,打开一个新线程在后台运行进程吗?并在我的PowerBUilder应用程序中调用此dll?这样的事情可能吗?
这是我的示例代码:
Class2.cs
string vartest;
public void testonly()
{
vartest = "TESTING ONLY";
}
public string threadtest()
{
Thread workerThread = new Thread(new ThreadStart(testonly));
workerThread.Start();
Thread.Sleep(10000);
workerThread.Abort();
return vartest;
}
以下是我从窗口打开事件中的PowerBuilder应用程序调用此DLL的位置:
OLEObject myoleobject
myoleobject = CREATE OLEObject
myoleobject.connecttonewobject("Sample.Class2")
string test
test = myoleobject.threadtest()
messagebox('', test)
然而,我在PowerBuilder应用程序中遇到一个错误,在初始化"测试"变量的行中显示"调用外部函数时出错…"。
PowerBuilder的哪个版本?这是PowerBuilder Classic还是.Net?它是否正确注册?尝试从VBScript进行测试,看看会发生什么。
官方论坛在这里:http://scn.sap.com/community/developer-center/powerbuilder
-
是否检查了ConnectToNewObject的返回值?它成功了吗?
-
通过搜索您试图连接到的类来检查注册表
-
你也可以在ConnectToNewObject中使用GUID,你能在注册表中找到那个GUID吗?
-
您是否已使C#类ComVisible?
很抱歉回答晚了。作为参考,问题的详细信息可以在OleRuntimeError对象中找到,该对象与您遇到的异常一起返回。例如,尝试将这个try-catch块添加到代码中:
try
test = myoleobject.threadtest()
catch (OleRuntimeError oleex)
Messagebox("OleRuntimeError", oleex.description + "~n" + oleex.GetMessage())
catch (RuntimeError ex)
Messagebox("RuntimeError",ex.GetMessage())
end try
这将向您显示OLE错误的详细信息,然后您可以决定需要做些什么来修复它。