【问题标题】:Calling a C# DLL from PowerBuilder从 PowerBuilder 调用 C# DLL
【发布时间】:2015-12-09 07:41:57
【问题描述】:

好的,我有一个 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 应用程序中收到一个错误,在我初始化“测试”变量的那一行显示“调用外部函数时出错...”。

【问题讨论】:

  • 你试过先问谷歌先生吗?
  • @L-Three 是的,遗憾的是,PowerBuilder 的支持社区很少。
  • 不确定你做了什么,但有很多谷歌搜索结果,例如:blogs.artinsoft.net/Mrojas/archive/2009/03/03/…
  • 我已经知道如何从 PowerBuilder 调用 DLL。忘记说了,不好意思。我的问题是是否可以在调用该 DLL 时在该 DLL 中启动一个新线程?
  • 为什么不呢?创建一个小型 POC 进行测试。

标签: c# multithreading dll powerbuilder


【解决方案1】:

什么版本的 PowerBuilder?这是 PowerBuilder Classic 还是 .Net?是否正确注册?尝试从 VBScript 进行测试,看看会发生什么。

官方论坛在这里: http://scn.sap.com/community/developer-center/powerbuilder

【讨论】:

  • 您好,我使用的是 PB Classic 12.5。如何检查它是否正确注册?我正在使用这样的 regasm.exe "C:\Windows\Microsoft.NET\Framework64\v4.0.30319> regasm \" 它说“类型注册成功”。
【解决方案2】:
  • 您检查过 ConnectToNewObject 的返回值吗?成功了吗?

  • 通过搜索您尝试连接的类来检查注册表

  • 你也可以使用ConnectToNewObject中的GUID,你能在注册表中找到那个GUID吗?

  • 您是否已将 C# 类设为 ComVisible?

【讨论】:

    【解决方案3】:

    抱歉回复晚了。作为参考,可以在您遇到的异常返回的 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 错误中发生的情况的详细信息,然后您可以决定需要做什么来修复它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多