private void DoDiscBuild(string dataDir, string ipBin, List<string> trackList, string outdir) { try { List<DiscTrack> tracks = _builder.BuildGDROM(dataDir, ipBin, trackList, outdir); Invoke(new Action(() => { string gdiPath = System.IO.Path.Combine(outdir, "disc.gdi"); if (System.IO.File.Exists(gdiPath)) { _builder.UpdateGdiFile(tracks, gdiPath); } ResultDialog rd = new ResultDialog(_builder.GetGDIText(tracks)); rd.ShowDialog(); Close(); })); } catch (Exception ex) { Invoke(new Action(()=>{ MessageBox.Show("Failed to build disc.\n"+ex.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error); Close(); })); } _worker = null; }