Preventing Threading Problems When Using a Repository Under Progress OpenEdge

Valid from List & Label 23
To avoid threading problems when using a repository under Progress OpenEdge, apply the [SingleThread] attribute from the combit.ListLabel??Repository namespace to the repository class. The hurdle here: OpenEdge itself does not support any attributes.

Since OpenEdge only implements the interface, but the attribute itself cannot be set, a solution may look like this:

Create a dummy class that sets the attribute:
namespace LuL.OpenEdgeRepository
{
    [combit.ListLabel23.Repository.SingleThreadedAttribute]
    public class SingleThreadedRepository
    {
        public SingleThreadedRepository ()
        {
        }
    }
}


An OpenEdge ABL repository then implements the IRepository interface and inherits from the dummy class:

CLASS ListLabel.OpenEdgeRepository.OpenEdgeRepositoryModel IMPLEMENTS IRepository INHERITS LuL.OpenEdgeRepository.SingleThreadedRepository:
IDKBTE001361 KBTE001361