在线网站生成器app开发上线流程

web/2025/9/29 12:16:15/文章来源:
在线网站生成器,app开发上线流程,小米企业网站的优化建议,东莞网站设地最近几周一直在做DotNET WinForm开发#xff0c;陆陆续续有些收获#xff0c;希望能够有空好好整理整理。记下来以免以后又忘了。:-) 一、最简单的线程使用方法 新建一个C# Windows应用程序项目#xff0c;在最前面的引用代码那增加一行using System.Threading;在界面上扔个…最近几周一直在做DotNET WinForm开发陆陆续续有些收获希望能够有空好好整理整理。记下来以免以后又忘了。:-)   一、最简单的线程使用方法 新建一个C# Windows应用程序项目在最前面的引用代码那增加一行using System.Threading;在界面上扔个Button和Label再写几行简单的代码就是一个最简单的线程例子啦private void button1_Click(object sender, System.EventArgs e){ Thread t new Thread(new ThreadStart(myRun)); t.Start();} private void myRun(){ for(int i0; i1000000; i) {  if (i % 1000 0)    label1.Text i.ToString(); }} 当然这个例子没有处理线程之间同步之类关系。你试试快速点几下Button就知道有什么好玩的事情发生了。 二、给线程传递参数  ThreadStart 委托没有参数也没有返回值。其声明为 public delegate void ThreadStart();所以不能直接给线程传递参数。但是我们可以把线程函数封装到一个类里给类的实例传递参数可以在创建实例时也可以用另外的函数来传递。这不是重点。因为DotNET自由线程的特点在线程中是可以访问同一个类里的数据的。我们更改上面的简单例子尝试给线程传递一个循环的终止值。首先是弄个类把 myRun 函数装进去 :-) 注意要公开函数(public) public class myThreadClass {  private int Max 0;  public myThreadClass(int initValue)  {   Max initValue;  }   public void myRun()  {   for(int i0; i   {    if (i % 1000 0)      label1.Text i.ToString();   }  } }然后Button事件有点小改动如下myThreadClass myThread new myThreadClass(800000);Thread t new Thread(new ThreadStart(myThread.myRun));t.Start();仅仅是多了一行很简单是吧 编译出错啦找不到类型或命名空间名称label1注意到我们原来是直接在Form实例中使用label1现在将myRun装到另外的类里当然不能直接访问label1啦。怎么办一样弄成个参数传给myThreadClass就行。修改后的程序如下 public class myThreadClass {  private int Max 0;  object obj null;   public myThreadClass(int initValue, object initObj)  {   Max initValue;   obj initObj;  }   public void myRun()  {   for(int i0; i   {    if (i % 1000 0)      if (obj ! null)       (obj as Label).Text i.ToString();   }  } }下面是Form1中的按钮事件  private void button1_Click(object sender, System.EventArgs e)  {   myThreadClass myThread new myThreadClass(800000, label1);   Thread t new Thread(new ThreadStart(myThread.myRun));   t.Start();  }好了运行下看看是不是和原来的效果一模一样。差别在于调用线程的时候你可以传递参数把握线程的运行时间。 三、获得线程的返回值 第二部分解决了线程参数的问题这部分我们来解决返回值的问题。我们注意到第二部分的代码会把线程的中间运行状态的值写到Form1的label1.Text中那么我们能不能从这里动手脚呢试试看。往Form1上扔个进度条ProgressBar先myThreadClass我们暂时先不动只改Button事件  private void button1_Click(object sender, System.EventArgs e)  {   const int Max 800001;   progressBar1.Maximum Max;   progressBar1.Value 0;   myThreadClass myThread new myThreadClass(Max, label1);   Thread t new Thread(new ThreadStart(myThread.myRun));   t.Start();   while ( t.IsAlive )   {    progressBar1.Value Int32.Parse(label1.Text.ToString());    progressBar1.Refresh();    Thread.Sleep(0);   }  }运行一下结果是不行窗体完全失控了。如图 分析下原因。很显然是那个while搞的鬼让窗体主线程在这里不停的循环、执行。根本没有多余的力气来更新窗体界面显示啦 此路不通那怎么办好呢答案就是 回调函数。首先声明一个回调函数原型在我们这个例子中只需要取得一个返回值所以回调函数的参数只有一个如果有更多返回值可相应修改。namespace TestThread{ public delegate void ThreadCallback(int i);   public class Form1 : System.Windows.Forms.Form 然后修改myThreadClass类不再需要传递label1给线程了。因为我们将在回调函数中获得线程当前循环的值然后由回调函数自个来更新label1.Text同时还要更新progressBar1。但要传递给线程的参数扔是两个一个是initValue用来控制循环的一个是ThreadCallback callbackDelegate即回调函数。修改后的myThreadClass类代码如下 public class myThreadClass {  private int Max 0;  private ThreadCallback callback;   public myThreadClass(int initValue, ThreadCallback callbackDelegate)  {   Max initValue;   callback callbackDelegate;  }   public void myRun()  {   for(int i0; i   {    if (i % 1000 0)      if (callback ! null)       callback(i);   }  } } 回到Form1先写个回调函数ThreadCallback 的具体实现  public void myCallback(int i)   {   label1.Text i.ToString();   label1.Refresh();   progressBar1.Value i;   progressBar1.Refresh();  }接着修改Button事件  private void button1_Click(object sender, System.EventArgs e)  {   const int Max 800001;   progressBar1.Maximum Max;   progressBar1.Value 0;   myThreadClass myThread new myThreadClass(Max, new ThreadCallback(myCallback));   Thread t new Thread(new ThreadStart(myThread.myRun));   t.Start();  }代码中通过new ThreadCallback(myCallback)给线程传了回调函数。 OK改动都不算多。我们运行下看看吧一切顺利如图 label1和progressBar1同步更新状态。而且在线程运行时拖动主窗体也不会失去控制了没有任何问题。 后文 本文是《DotNET多线程使用初探》故不是详细的DotNET多线程使用说明。多线程还有很多其它方面如生存期、线程间同步、死锁问题、STA、MTA、线程池等等等等。本文起源于我在DotNET开发中处理一些复杂的数据库操作非常耗时主窗体经常失去反应。这时就需要一些简单的线程操作。很必要的一个是给用户一个进度条。如果你遇到的情况跟我相似相信本文对你会有所帮助。  转载于:https://www.cnblogs.com/CrazyWill/archive/2005/08/25/222579.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

傻瓜式网站界面wordpress 分类名称

目录 新建节点 Neo4j CQL创建具有属性的节点 多个标签到节点 单个标签到关系 MATCH命令 RETURN命令: Neo4j CQL - MATCH & RETURN匹配和返回 总结:本文介绍了Neo4j的CREATE,MATCH,RETURN的基本操作 新建节点 Neo4j创建一…

做农产品的网站安康地seo

网络 我们生活在一个网络无处不在的一个虚拟世界中,网络中的每一个设备都是一个节点。大多是我们的计算机,但是他还可以连接其他设备,例如打印机,路由器,网关,你的手机,智能家居等。我们可以使…

佛山p2p网站建设惠州百度seo排名

来源:机器之心编辑:陈萍、杜伟大脑是如何近似反向传播算法的?发表在《自然 - 神经科学》的一篇论文,研究者找到了可以生活在活体大脑并进行实时工作的等价物,他们提出的大脑学习算法模型可以模拟反向传播过程。每当人类…

山西省网站建设哪里好手机免费建站教程

目录 递归实现排列型枚举 递归实现排列类型枚举 II 递归实现组合型枚举 递归实现组合型枚举 II 递归实现指数型枚举 递归实现指数型枚举 II 递归不是循环,递归利用了系统栈,只要是函数都会被系统管理。当执行到函数地址入口时就会为函数在系统栈上分…

制作网站的免费软件品牌建设可以从哪方面入手

win10-tdengine的安装及使用 一、下载及安装配置1.1 下载安装1.2 配置1.3 关闭防火墙和开放端口1.3.1 关闭防火墙1.3.2 开放6030端口 二、启动及关闭服务2.1 启动tdengine服务2.2 关闭tdengine服务2.2 开机自启动配置 四、可视化工具五、TDengine 命令行(CLI&#x…

免费购物系统东莞优化seo网站关键词优化

张家港市HG-KN13J-S100三菱伺服控制器MR-J2S1该产品还有RS-232和RS-422串行通讯功能,通过安装有伺服设置软件的个人计算机就能进行参数设定,试运行,状态显示和增益调整等操作。2与MR-J2S系列配套的伺服电机编码器采用了分辨率为131072脉冲/转…

ktv支付订房网站模板网站快捷导航ie怎么做

91. 简述java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?有两种实现方法,分别是继承Thread类与实现Runnable接口 用synchronized关键字修饰同步方法 反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而…

织梦安防网站源码网站建设犭金手指C排名15

安全防御 一、安全防御1、网络安全常识及术语资产网络安全网络空间(Cyberspace)漏洞0day1day后门exploit攻击安全策略安全机制社会工程学APT(最新) 2、为什么会出现网络安全问题3、什么样的网络是安全的? 二、威胁模型…

新乡个人网站建设哪家好网校网站建设方案

113. 探索CSS计数器:优雅管理网页元素的计数与序号 在前端开发中,我们经常需要对网页元素进行计数与序号,如有序列表、表格行号、步骤指示等。为了优雅地管理这些计数与序号,CSS提供了一种强大的功能:CSS计数器&#…

南昌网站建设kaiu桂林漓江介绍

题干 有一个自行车手打算进行一场公路骑行&#xff0c;这条路线总共由 n 1 个不同海拔的点组成。自行车手从海拔为 0 的点 0 开始骑行。 给你一个长度为 n 的整数数组 gain &#xff0c;其中 gain[i] 是点 i 和点 i 1 的 净海拔高度差&#xff08;0 < i < n&#xff…

浙江平安建设信息系统网站苏州市吴江住房和城乡建设局网站

为了提高Python爬虫的效率和稳定性&#xff0c;需要综合考虑多个方面&#xff0c;包括优化网络请求、合理设计爬取策略、处理异常情况、使用合适的工具和库等。以下是一些详细的技术和方法&#xff0c;帮助大家快速提高Python爬虫的效率和稳定性。 1. 网络请求优化 异步请求 …

榆林免费做网站办公空间设计网站

简介 WebSocket 是基于TCP/IP协议&#xff0c;独立于HTTP协议的通信协议。WebSocket 连接允许客户端和服务器之间的全双工通信&#xff0c;以便任何一方都可以通过已建立的连接将数据推送到另一方。 我们常用的HTTP是客户端通过「请求-响应」的方式与服务器建立通信的&#x…

外贸网站建设 佛山电脑配件电子商务网站设计方案

目录 一、问题描述二、问题复现1.Maven依赖2.application.yml 配置3.DemoController.java4.snowflakePage.html 页面5.DemoControllerAdvice.java 监听6.问题复现 三、原因分析四、问题解决方案一方案二 一、问题描述 Java 后端使用雪花算法生成 Long 类型的主键 ID&#xff0…

网站怎么做网络推广桂林两江四湖景区怎么游览

项目内容这个作业属于哪个课程班级博客这个作业的要求在哪里作业要求我在这个课程的目标是对于人工智能有一定的了解这个作业在哪个具体方面帮助我实现目标能够有平台支持我对于人工智能更加深入的了解与交流作业正文见下其他参考文献无具体作业1、描述你在这门课想要达到的具体…

网页制作与网站建设实战大全 视频无锡网站建设制作

芯片初创公司Etched近日宣布推出了一款针对 Transformer架构专用的AISC芯片 “Sohu”&#xff0c;并声称其在AI大语言模型&#xff08;LLM&#xff09;推理性能方面击败了NVIDIA最新的B200 GPU&#xff0c;AI性能达到了H100的20倍。这也意味着Sohu芯片将可以大幅降低现有AI数据…

成都电子商务网站建站二手交易网站怎么做

文章目录 Introlog 及结论代码 Intro 界面设计&#xff1a;点击左侧按钮&#xff0c;会将右侧 青色的RightFragment 替换成 黄色的AnotherRightFragment&#xff0c;而这两个 Fragment 的生命周期方法都会打印日志。 所以只要看执行结果中的日志&#xff0c;就可以知道 Fragme…

专业3合1网站建设北京百度seo工作室

文章目录 &#x1f352;题目一 69. x 的平方根&#x1f352;解法一&#x1f352;解法二&#x1f352;题目二 70. 爬楼梯&#x1f352;解法一 &#x1f352;题目一 69. x 的平方根 &#x1f352;解法一 class Solution(object):def mySqrt(self, x):""":type x:…

上海产品网站建设semester at sea

GUI编程 04 贪吃蛇小游戏 4.2 第二步&#xff1a;绘制静态的小蛇 现在绘制静态的小蛇(即小蛇初始位置)&#xff0c;并且完善游戏默认初始状态。这一步还在GamePanel类中实现。 首先&#xff0c;定义了小蛇的数据结构&#xff0c; //定义蛇的数据结构int length; //小蛇总长…

女子医院网站设计怎么做做网站需要注意的

今天小站来和各位聊聊date这个熟词。说起date&#xff0c;这可是工作生活中一个极其常用的单词。无论是为下次工作会议定个日期&#xff0c;还是为即将举行的婚礼定个日子&#xff0c;都可以用“fix/set a date for sth”来表示。在沃尔玛等超市购物&#xff0c;经常可以看到食…

网站建设推荐北京华网天下宁波自助建站公司

图的深度遍历 Time Limit: 1000MS Memory Limit: 65536KBSubmit StatisticProblem Description 请定一个无向图&#xff0c;顶点编号从0到n-1&#xff0c;用深度优先搜索(DFS)&#xff0c;遍历并输出。遍历时&#xff0c;先遍历节点编号小的。Input 输入第一行为整数n&#xff…