从PowerBuilder调用C#DLL
好的,我有一个PowerBuilder应用程序。我可以创建一个DLL文件c#来打开一个新线程在后台运行进程吗?在我的PowerBUilder应用程序中调用此dll?这可能吗 以下是我的示例代码: 类别2.cs从PowerBuilder调用C#DLL,c#,multithreading,dll,powerbuilder,C#,Multithreading,Dll,Powerbuilder,好的,我有一个PowerBuilder应用程序。我可以创建一个DLL文件c#来打开一个新线程在后台运行进程吗?在我的PowerBUilder应用程序中调用此dll?这可能吗 以下是我的示例代码: 类别2.cs string vartest; public void testonly() { vartest = "TESTING ONLY"; } public string threadtest() { Thread
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应用程序在初始化“test”变量的行中出现一个错误,上面写着“调用外部函数时出错…”。什么版本的PowerBuilder?这是PowerBuilder Classic还是.Net?登记妥当了吗?尝试从VBScript进行测试,看看会发生什么 官方论坛在这里:
什么版本的PowerBuilder?这是PowerBuilder Classic还是.Net?登记妥当了吗?尝试从VBScript进行测试,看看会发生什么 官方论坛在这里:
- 是否检查了ConnectToneObject的返回值?成功了吗
- 通过搜索要连接的类来检查注册表
- 您也可以在ConnectToneObject中使用GUID,您可以在注册表中找到该GUID吗
- 你有没有让C#class变得可见
- 是否检查了ConnectToneObject的返回值?成功了吗
- 通过搜索要连接的类来检查注册表
- 您也可以在ConnectToneObject中使用GUID,您可以在注册表中找到该GUID吗
- 你有没有让C#class变得可见
try
test = myoleobject.threadtest()
catch (OleRuntimeError oleex)
Messagebox("OleRuntimeError", oleex.description + "~n" + oleex.GetMessage())
catch (RuntimeError ex)
Messagebox("RuntimeError",ex.GetMessage())
end try
这将向您显示有关OLE错误发生情况的详细信息,然后您可以决定需要执行哪些操作来修复该错误 很抱歉回答晚了。为了便于参考,可以在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错误发生情况的详细信息,然后您可以决定需要执行哪些操作来修复该错误 你试过先问Google先生吗?@L-Three是的,很遗憾,PowerBuilder的支持社区很少。不知道你做了什么,但有很多Google结果,例如:。我已经知道如何从PowerBuilder调用DLL。忘了提了,对不起。我的问题是,调用DLL时是否可以在该DLL中启动新线程?为什么不可以?创建一个小POC来测试它。你试过先问Google先生吗?@L-Three是的,很遗憾,PowerBuilder的支持社区很少。不知道你做了什么,但有很多Google结果,例如:。我已经知道如何从PowerBuilder调用DLL。忘了提了,对不起。我的问题是,调用DLL时是否可以在该DLL中启动新线程?为什么不可以?创建一个小POC来测试它。您好,我正在使用PB Classic 12.5。如何检查它是否正确注册?我使用的regasm.exe是这样的“C:\Windows\Microsoft.NET\Framework64\v4.0.30319>regasm\”,上面写着“类型注册成功”。您好,我使用的是PB Classic 12.5。如何检查它是否正确注册?我使用的regasm.exe是这样的“C:\Windows\Microsoft.NET\Framework64\v4.0.30319>regasm\”,上面写着“类型注册成功”。