Threading-Probleme bei Verwendung eines Repositories unter Progress OpenEdge verhindern

Gilt ab List & Label 23
Zur Vermeidung von Threading-Problemen bei Verwendung eines Repositories unter Progress OpenEdge sollte das [SingleThread]-Attribut aus dem combit.ListLabel??.Repository-Namespace auf die Repository-Klasse angewendet werden. Die Hürde hierbei: OpenEdge selbst unterstützt keine Attribute.

Da in OpenEdge nur das Interface implementiert, das Attribut selbst aber nicht gesetzt werden kann, kann eine Lösung wie folgt aussehen:
 

Erzeugen Sie eine "Dummy"-Klasse, die das Attribut setzt:

namespace LuL.OpenEdgeRepository
{
    [combit.ListLabel23.Repository.SingleThreadedAttribute]
    public class SingleThreadedRepository
    {
        public SingleThreadedRepository ()
        {
        }
    }
}


Ein OpenEdge ABL Repository implementiert dann das IRepository Interface und erbt von der “Dummy”-Klasse:

CLASS ListLabel.OpenEdgeRepository.OpenEdgeRepositoryModel IMPLEMENTS IRepository INHERITS LuL.OpenEdgeRepository.SingleThreadedRepository:
IDKBTD001355 KBTD001355