异步调用进度条窗体弹出
public partial class LoadProgressBar : Form
{
int losttime = 0;
/// <summary>
/// 是否可以关闭窗体
/// </summary>
public bool ClosedFlag = false;
public LoadProgressBar()
{
InitializeComponent();
}
public void SetProgressMaxValue(int value, string name)
{
progressBar1.Maximum = value;
progressBar1.Value = 0;
nameLab.Text = name;
losttime = 0;
Console.WriteLine("Maximum:" + value);
}
public void SetValue(int value, int totalValue)
{
try
{
losttime = 0;
this.progressBar1.BeginInvoke(new Action(() =>
{
progressBar1.Maximum = totalValue;
int tempvalue = progressBar1.Value + value;
if (tempvalue < progressBar1.Maximum)
{
speedLab.Text = tempvalue.ToString("D2") + "/" + totalValue.ToString("D2");
progressBar1.Value = tempvalue;
}
Console.WriteLine("tempvalue:" + tempvalue);
}));
}
catch
{ }
}
private void LoadProgressBar_FormClosing(object sender, FormClosingEventArgs e)
{
if (ClosedFlag == false)
{
if (losttime > 30)
{
this.DialogResult = DialogResult.Cancel;
return;
}
if (MessageBox.Show("正在导出文件,是否要中断?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
this.DialogResult = DialogResult.Cancel;
}
else
{
e.Cancel = true;
//this.DialogResult = DialogResult.Cancel;
}
}
else
{
this.DialogResult = DialogResult.OK;
}
}
private void closed_Pic_Click(object sender, EventArgs e)
{
this.Close();
}
private void timer1_Tick(object sender, EventArgs e)
{
losttime++;
if (losttime > 30)
{
this.Close();
}
}
}
来源:https://www.cnblogs.com/wangyonglai/archive/2020/02/27/12372023.html