当前位置: 首页 > wzjs >正文

农产品网站建设策划书范文怎么制作公众号文章怎么制作

农产品网站建设策划书范文,怎么制作公众号文章怎么制作,虹口品牌网站建设,怎么做自己的网站平台1. 在窗体上添加一个 ProgressBar 控件 在您的窗体中添加一个 ProgressBar 控件,并设置其属性为 Marquee 或 Continuous。这个控件用来展示连接测试的进度。 2. 初始化 BackgroundWorker 在窗体的构造函数中,初始化并配置 BackgroundWorker。假设您的…
1. 在窗体上添加一个 ProgressBar 控件

在您的窗体中添加一个 ProgressBar 控件,并设置其属性为 Marquee 或 Continuous。这个控件用来展示连接测试的进度。

2. 初始化 BackgroundWorker

在窗体的构造函数中,初始化并配置 BackgroundWorker。假设您的窗体类名为 Form1

BackgroundWorker backgroundWorker;  

public Form1() // 构造函数  
{  
    InitializeComponent()

    // 具体原因看问题点1 
    System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;

    // 初始化 BackgroundWorker  
    backgroundWorker = new BackgroundWorker();  
    backgroundWorker.WorkerReportsProgress = true;  
    backgroundWorker.DoWork += BackgroundWorker_DoWork;  
    backgroundWorker.ProgressChanged += BackgroundWorker_ProgressChanged;  
    backgroundWorker.RunWorkerCompleted += BackgroundWorker_RunWorkerCompleted;  
}

3. 开始 BackgroundWorker

在 btnTestLink_Click 方法中启动 BackgroundWorker,并显示进度条:

private void btnTestLink_Click(object sender, EventArgs e)  
{  
    if (!backgroundWorker.IsBusy)  
    {  
        progressBar.Visible = true; // 显示进度条  
        progressBar.Value = 0; // 重置进度条  
        backgroundWorker.RunWorkerAsync(); // 启动异步操作  
    }  
}

4. 执行连接操作和报告进度

在 BackgroundWorker_DoWork 方法中实现您的连接逻辑。当每个项目完成连接测试后,通过 ReportProgress 方法更新进度:

private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)  
{  
    int totalItems = lvDevice.Items.Count;  
    int completedItems = 0;  
    
    foreach (ListViewItem item in lvDevice.Items)  
    {  
        if (item.Checked)  
        {  
            cp.IP = item.SubItems[3].Text;  
            cp.IPPort = Int32.Parse(item.SubItems[4].Text);  
            cp.CommStyle = 1;  
            cp.ClockID = Int32.Parse(item.SubItems[0].Text);  
            bool isConnected = OpenPort(ref cp);  
            
            // 创建一个更新对象  
            var updateInfo = new  
            {  
                Item = item,  
                Success = isConnected  
            };  

            // 报告进度  
            backgroundWorker.ReportProgress(0, updateInfo);  
            
            ClosePort(ref cp);  
            completedItems++;  
            
            // 更新进度条的值  
            backgroundWorker.ReportProgress((completedItems * 100) / totalItems);  
        }  
    }  
}

5. 更新 UI 元素

在 ProgressChanged 方法中根据连接结果更新 UI 控件:

private void BackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)  
{  
    var updateInfo = (dynamic)e.UserState;  
    
    // 更新 ListView 项的状态  
    if (updateInfo.Success)  
    {  
        updateInfo.Item.BackColor = Color.GreenYellow; // 成功则设置为绿色  
        updateInfo.Item.SubItems[5].Text = "连接成功"; // 显示连接状态  
        updateInfo.Item.ForeColor = Color.Black; // 设置文本颜色为黑色  
        updateInfo.Item.SubItems[5].ForeColor = Color.Green; // 状态文本颜色为绿色  
    }  
    else  
    {  
        updateInfo.Item.BackColor = Color.Red; // 失败则设置为红色  
        updateInfo.Item.SubItems[5].Text = "连接失败"; // 显示连接状态  
        updateInfo.Item.ForeColor = Color.Black; // 设置文本颜色为黑色  
        updateInfo.Item.SubItems[5].ForeColor = Color.Red; // 状态文本颜色为红色  
    }  
}

6. 处理完成操作

在 RunWorkerCompleted 方法中隐藏进度条,并提示用户所有操作已完成:private void BackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)  
{  
    progressBar.Visible = false; // 隐藏进度条  
    MessageBox.Show("所有连接测试完成!");  
}

问题点:

1.System.InvalidOperationException:“线程间操作无效: 从不是创建控件“lvDevice”的线程访问它

System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;

目的

System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls 是一个属性,设置为 false 后,允许从非创建控件的线程访问和修改控件。然而,尽管这样做可以消除异常,但这并不是一个好的做法,原因如下:

  1. 不安全性:直接从其他线程访问 UI 控件可能引发线程间竞争条件,导致应用程序崩溃或 UI 状态出错。
  2. 不推荐的做法:这种做法破坏了 Windows Forms 本身的线程模型,可能会导致难以调试的错误。
  3. 可维护性差:其他开发人员在看到此设置时,可能不明白代码为什么会这样处理,增加了理解和维护的复杂性。

正确的做法

正确的方式是使用 Control.Invoke 或 Control.BeginInvoke 方法将 UI 更新的代码封装进一个委托,并在主线程上执行。这样做不仅安全而且符合线程模型。


文章转载自:

http://jRp8Vzxf.btwrj.cn
http://0oWzk3bM.btwrj.cn
http://VyUKVdSQ.btwrj.cn
http://ob6TOZkq.btwrj.cn
http://XsVpZTmX.btwrj.cn
http://lPD2VVf5.btwrj.cn
http://YX4Z1YQV.btwrj.cn
http://YIFpCS7B.btwrj.cn
http://tHmyQocN.btwrj.cn
http://Loe3fqwG.btwrj.cn
http://NNZW6oZu.btwrj.cn
http://7vjUPbPD.btwrj.cn
http://V9jK7Ftg.btwrj.cn
http://OWeM5Byv.btwrj.cn
http://mM8Nke11.btwrj.cn
http://nHJEgDhU.btwrj.cn
http://aiAxeoqu.btwrj.cn
http://SIwI1OIj.btwrj.cn
http://w0FpmPZ8.btwrj.cn
http://R0T6hHWM.btwrj.cn
http://ycGGN1sD.btwrj.cn
http://QLeb70Ko.btwrj.cn
http://7VFaiQoZ.btwrj.cn
http://vJjaaBR8.btwrj.cn
http://bLeTIPbA.btwrj.cn
http://UCa696F6.btwrj.cn
http://SDSPYOEf.btwrj.cn
http://OB9kHAKf.btwrj.cn
http://RsZjI9LF.btwrj.cn
http://wQ1nUMcR.btwrj.cn
http://www.dtcms.com/wzjs/775009.html

相关文章:

  • 徐州网站制作功能广州市天河区建设局官方网站
  • 陈村建网站广州网站建设 易企建站公司
  • 石家庄网站做网站上海网站建设 网站制作
  • 老板让做公司网站设计公共资源交易中心总结
  • 游戏网站的设计方案网站智能云
  • 票务网站开发建设网站远达
  • 注册公司网站需要什么资料百度分析工具
  • 重庆广告网站推广雷诺网站群建设
  • 怎样做相亲网站太原优化排名推广
  • 黑色网站后台政务公开及网站建设意见
  • 一级a做爰片免费网站冫36 氪 网站如何优化
  • 网站优化公司电话沈阳响应式网站制作
  • 虞城做网站公司淘宝网站怎么建设的更加好
  • 哪个网站做五金冲压的百度地图排名可以优化吗
  • 网站建设服务哪个便宜淮安市建设工程安全监督站网站
  • 西宁seo网站建设wordpress id重置密码
  • 外贸网站 球衣泰州网站建设工作
  • 网站建设 招聘外贸流程英文版
  • 网站程序深圳建设网站需要多少钱
  • 新手如何制作网站富阳注册公司
  • 下载图片的网站建设关键词优化排名易下拉系统
  • 建设银行校园招聘网站网站模块介绍
  • 网站城市切换如何做免费做封面网站
  • 建立网站需要什么硬件深圳龙岗邮编
  • 南宁百度网站公司营销管理咨询
  • 公司网站空间怎么续费1.0钓鱼网站开发--站点说明
  • 深圳专业网站建设企业全定制网站开发
  • 建造网站做购物网站公司
  • 网站的建设可以起到什么作用是什么意思安徽百度关键词优化
  • iis建站安装wordpress下载软件用哪个软件好