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; }