Bei Dynamics AX, ist es manchmal nicht so einfach, zu erkennen wo und warum Sie
das Themen Multi-Threading verwenden
sollten, um einen bestimmten Prozess
oder Entwicklungsziel zu
erreichen.
In meinem Fall war es, dass ein Prozess des Main Thread. Das weiterarbeitet
der Nutzer verzögert, bis der Prozess beendet wurde. Es lag nun nahe diese länger
in einen eigenen Thread laufen zu lassen.
Das folgende Beispiel soll zeigen wie man einen Dynamics AX Prozess
in einen eigenen Thread ausführen kann. Hierbei war mir eine Rückmeldung der
Prozesse nicht wichtig.
Für dieses Beispiel habe ich einen Job erstellt der einen
entsprechenden Prozess einer Klasse Kapselt.
static void
ThreadJob(Args _args)
{
Thread t;
ExecutePermission perm;
container con;
;
{
Thread t;
ExecutePermission perm;
container con;
;
perm = new ExecutePermission();
perm.assert();
perm.assert();
… // create
new thread
t = new Thread();
t = new Thread();
//set parameter values
con = conins(con,1,’param1’);
con = conins(con,2,’param2’);
t.setInputParm(con);
con = conins(con,1,’param1’);
con = conins(con,2,’param2’);
t.setInputParm(con);
// run thread
t.run(classnum(LongProcess), staticMethodstr(LongProcess, ThreadExecute));
}
t.run(classnum(LongProcess), staticMethodstr(LongProcess, ThreadExecute));
}
Die Methode “ThreadExecute” der Klasse “LongProcess” beinhält
den eigentlichen Source des Prozess.
server
static void ThreadExecute(Thread T)
{
container ThParams = T.getInputParm();
Set permissionSet;
str param1;
int param2;
;
{
container ThParams = T.getInputParm();
Set permissionSet;
str param1;
int param2;
;
permissionSet = new Set(Types::Class);
permissionSet.add(new InteropPermission(InteropKind::ClrInterop));
CodeAccessPermission::assertMultiple(permissionSet);permissionSet.add(new InteropPermission(InteropKind::ClrInterop));
//get parameter values
param1= conpeek(ThParams, 1);
param2= conpeek(ThParams, 2);
// run long
term process param1= conpeek(ThParams, 1);
param2= conpeek(ThParams, 2);
// ………
CodeAccessPermission::revertAssert();
}
}
Keine Kommentare:
Kommentar veröffentlichen