ProgressMonitorDialog : Access Violation

yidabu yidabu.spam at gmail.com
Fri Jun 20 03:21:02 PDT 2008


jface ProgressMonitorDialog cause runtime Access Violation,
ddbg captured:

Unhandled Exception: EXCEPTION_ACCESS_VIOLATION(0xc0000005) at dwtx.jface.dialog
s.ProgressMonitorDialog.ProgressMonitorDialog.configureShell.dwt.widgets.Shell.S
hell.__anonclass95.handleEvent.dwt.widgets.Event.Event.__anonclass96.run (0x0040
d890) thread(3412)

tested with dwt-win svn, dwtx svn, dmd 1.028

Example code:


import dwt.DWT;
import dwt.layout.FillLayout;
import dwt.widgets.Display;
import dwt.widgets.Shell;
import dwt.widgets.Listener;
import dwt.widgets.Event;
import dwt.widgets.Button;

import dwtx.jface.dialogs.PopupDialog;
import dwt.dwthelper.utils;

import dwtx.jface.dialogs.ProgressMonitorDialog;
import dwtx.core.runtime.IProgressMonitor;
import dwtx.jface.operation.IRunnableWithProgress;

import tango.core.Thread;


void handleSelection(Event e, Shell shell)
{

    void run(IProgressMonitor monitor)
    {
        monitor.beginTask("generate", 30);
        for(int i=0; i<100; i++)
        {
            if(monitor.isCanceled())
            {
                return;
            }
            monitor.worked(1);
            Thread.sleep(50);
        }
        monitor.done();
    }

    auto dialog = new ProgressMonitorDialog(shell);
    dialog.run(true, true, dgIRunnableWithProgress(&run));

}

void main() {
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    Button button = new Button(shell, DWT.PUSH);
    button.setText("&OK");

    button.addListener(DWT.Selection, dgListener(&handleSelection, shell));

    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) display.sleep();
    }
    display.dispose();
}

-- 
yidabu <yidabu.spam at gmail.com>
http://www.dsource.org/projects/dwin

D 语言-中文(D Chinese):
http://www.d-programming-language-china.org/
http://bbs.d-programming-language-china.org/
http://dwin.d-programming-language-china.org/
http://scite4d.d-programming-language-china.org/




More information about the Digitalmars-d-dwt mailing list