首页 新闻 搜索 专区 学院

C# WinForm 进度条。会动!

0
悬赏园豆:10 [已解决问题] 解决于 2021-09-06 13:18

这样写2秒后不会关闭

        private void button1_Click(object sender, EventArgs e)
        {
            Form7 form7 = new Form7();
            form7.ShowDialog();
            System.Threading.Thread.Sleep(2000);
            form7.Close();
        }

但是,这样写进度条不会动……

        private void button1_Click(object sender, EventArgs e)
        {
            Form7 form7 = new Form7();
            form7.Show();
            System.Threading.Thread.Sleep(2000);
            form7.Close();
        }

这是Form7

using System.Windows.Forms;

namespace test
{
    public partial class Form7 : Form
    {
        public Form7()
        {
            InitializeComponent();
        }
    }
}
echo_lovely的主页 echo_lovely | 菜鸟二级 | 园豆:443
提问于:2021-09-03 13:43
< >
分享
最佳答案
0

显示
TProcess = Task.Factory.StartNew(() =>
{
form7= new Form7();
form7.ShowDialog();
});
关闭
this.Invoke(new Action(() =>
{
if (form7!= null)
{
form7.Close();
form7.Dispose();
form7= null;
}
}));

收获园豆:4
王站住 | 菜鸟二级 |园豆:234 | 2021-09-03 13:52

用线程跑这个form对吧

echo_lovely | 园豆:443 (菜鸟二级) | 2021-09-03 14:35

@echo_lovely: 对

王站住 | 园豆:234 (菜鸟二级) | 2021-09-03 14:35
其他回答(2)
0

new Thread(()=>{Tread.Sleep(2000);wnd.Invoke(()=>{wnd.Close();});}).Start();

进度条同理;防止 重复执行,可以加个lock,如:

Monitor.TryEnter(__Lock,out canRun);

if(!canRun)return;

new Thread(()=>{Tread.Sleep(2000);wnd.Invoke(()=>wnd.Close();});Monitor.Release(__Lock);}).Start();

慢慢理解界面线程,多线程。

收获园豆:3
花飘水流兮 | 园豆:13072 (专家六级) | 2021-09-03 17:38
0

可以用用Task或BackgroundWorker来实现

收获园豆:3
会长 | 园豆:10302 (专家六级) | 2021-09-03 19:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册