У меня есть STA-поток, который добавляет PrintJob в очередь для печати.Этот PrintJob должен контролироваться, и я подумал, что Таймер будет правильным решением.Но, очевидно, я не могу получить доступ к PrintSystemJobInfo-Object в потоке таймера.
Как я могу решить эту ситуацию?
Мне пришло в голову, что мне нужно использовать синхронизированный объект, но я неЯ не знаю, как это сделать, и я не уверен, что это решит мою проблему ... Или есть другая техника (возможно, диспетчер?), которую я могу использовать?
Можно ли сделать таймер STA такимя могу создать printjob в потоке таймера (sta требуется для printqueue.addjob)?Но я думаю, что это был бы обходной путь ...
Любая помощь очень ценится ...
thx, effdee
edit: некоторый псевдокод:
class WcfService
{
public int ServiceFunc() {
Thread staThread = new Thread(myObj.myFunc);
staThread.setSTA() and start()
staThread.join()
return myObj.status;
}
}
-
class myObj
{
public int status;
public PrintSystemJobInfo printJob;
public Dispatcher d;
public void myFunc()
{
d = CurrentDispatcher;
printJob = printQueue.AddJob(...);
if (printJob == null) status = 0;
else status = 1;
Timers.Timer timer = new Timer(invokeTimer);
timer.Start();
}
public void invokeTimer(args)
{
d.Invoke(new Action(() => { timerFunc(args) }));
}
public void timerFunc(args)
{
//access printJob problem here ;)
writePrintJobDetailsToDatabase();
}
}