void showHash_Click(object sender, EventArgs e) { Model.InvokeAsync(delegate(object s, DoWorkEventArgs arg) { var data = arg.Argument as dynamic; HashInfo info = new HashInfo(data.Backup, data.File); arg.Result = info; }, delegate(object s, RunWorkerCompletedEventArgs arg) { if (!arg.Cancelled) { Form info = arg.Result as Form; info.Show(Model.Window); } }, "Hashing...", true, new { Backup = SelectedBackup, File = SelectedFiles.FirstOrDefault()}); }