Как сделать OleFrame в потоке без пользовательского интерфейса в Java? - PullRequest
1 голос
/ 06 февраля 2012

Подскажите, пожалуйста, как пользоваться

org.eclipse.swt.ole.win32.OleFrame

в потоке без пользовательского интерфейса? Создание "OleFrame", если это сделано в не-UI-потоках. Я знаю разницу между пользовательским интерфейсом и не-пользовательским потоком. Я пытаюсь добиться использования org.eclipse.swt.ole.win32.OleAutomation в `IRunnableWithProgress

Добавление

for(;mShell.getDisplay().readAndDispatch(););

(mShell задается в конструкторе) после каждого вызова OLE немного помогает, но недостаточно ...

Любая помощь будет оценена.

OutlookHelper outlook = new OutlookHelper(mShell, mModel.getEmailToAddresses(), "Feedback report", emailInfo.body, attachment);
new ProgressMonitorDialog(mShell).run(true, false, outlook);

.

public class OutlookHelper implements IRunnableWithProgress {
    public void run(final IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
        monitor.beginTask("Sending...", IProgressMonitor.UNKNOWN);
        send(monitor);      
        monitor.done();
    }

    private void send(IProgressMonitor monitor) throws InterruptedException {

        monitor.subTask("Creating OLE frame");
        // Will block UI thread here ...
        final OleFrame frame = new OleFrame(mShell, SWT.NONE);

        monitor.subTask("Starting Outlook application");
        // Will block UI thread here ...
        OleClientSite site = new OleClientSite(frame, SWT.NONE, "Outlook.Application");
        ...
    }   
}
...