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应用程序中遇到一个错误,在初始化"测试"变量的行中显示"调用外部函数时出错…"。

Calling a C# DLL from 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错误的详细信息,然后您可以决定需要做些什么来修复它。