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