Как вы объяснили, вы хотите показать диалоговое окно со значком, что вы сохраняете видео в фоновом режиме и не позволяете пользователю что-то делать.Один из обычных способов сделать это с помощью BackgroundWorker
в вашем диалоге.Вот код, как это будет работать:
public class frm_Save : Form
{
public FrmProgress(List<TransferOptions> transferOptions)
{
InitializeComponent();
BackgroundWorker BgrdWorker = new System.ComponentModel.BackgroundWorker();
this.BgrdWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.BgrdWorker_DoWork);
this.BgrdWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.BgrdWorker_RunWorkerCompleted);
}
private void FrmProgress_Load(object sender, EventArgs e)
{
// Show image and message...
}
private void BgrdWorker_DoWork(object sender, DoWorkEventArgs e)
{
// Call your video Process start Function
// after that
var stopWatch = new StopWatch();
stopWatch.Start()
while (true)
{
if (stopWatch.ElapsedMilliseconds >1000 || videoProcessHasReturnedSuccessfully)
{
break
}
}
}
private void BgrdWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// inform the user the video processing is finished
this.Close();
}
}
Затем в основной форме вашего консольного приложения, когда вы хотите запустить весь процесс, вы вызываете:
frm_Save fsave = new frm_Save();
fsave.ShowDialog()
Совет:Вы также можете использовать BgrdWorker.ProgressChanged
, чтобы показать ход выполнения фоновой задачи пользователю, связываясь между фоновой задачей и пользовательским интерфейсом, если это необходимо, но вы не запросили об этом в своем вопросе.