-1

I want to use a .NET class library written in C# in the 4GL Progress OpenEdge but I did not find good, working example. Progress says it's possible to do what I want to do, but it doesn't work.

jalgames
  • 781
  • 4
  • 23
SW-Entwickler
  • 51
  • 1
  • 10

2 Answers2

0

The progress knowledgebase states:

It is possible to call .Net assemblies (DLLs) from the 4GL by using COM (ActiveX) wrappers between the 4GL and the .Net assemblies. It is your responsibility to write the COM (ActiveX) wrapper program. Help in implementing this is outside of the scope of Technical Support and we strongly recommend that you utilize the resources Microsoft has available (msdn.microsoft.com) to help you.

This article might help: Calling a .NET Component from a COM Component

Good luck!

David Kirkland
  • 2,431
  • 28
  • 28
0

Depending on version of Progress it might be possible to call the .Net class natively in the 4GL. However there are some limits to this. Progress for instance is very single threaded and cannot handle multi threaded .Net classes (for instance if an event occurs in a second thread). Basic support was added somewhere around 10.2B but has later been increased.

You can look at these (large) documents:

They are mostly about GUI programming but can be used as a reference.

The first thing you need to do is set up an assemblies.xml-file to add your component/class to your environment. After that it depends on your specific class but basic OOPABL is "quite" straightforward.

DEFINE VARIABLE c AS CLASS System.Collections.ArrayList.
c = NEW System.Collections.ArrayList().
Jensd
  • 7,886
  • 2
  • 28
  • 37