随笔分类 -  多线程

同步程序中调用异步的方法
摘要:我们平时碰到很多,同步的主程序中需要用到一些工具类是异步的,这样主程序还不能加上异步的 task等标识,就会报错.而直接调用似乎又等不到返回结果. 将调用包装在Task.Run<>(async () => await FunctionAsync()); 实际winform 项目内参考的下边的例子 作 阅读全文
posted @ 2023-05-27 16:51 小石头的一天 阅读(57) 评论(0) 推荐(0)
关于批量下载线程池与信号机制的使用
摘要:步骤一 把下载链接进行前期加工准备放入队列 准备完毕之后通知步骤二进行下载 步骤二 开启线程池任务下载队列内容 全部下载完毕之后 通知步骤一 准备下载队列 用到task 线程池 和AutoResetEvent 信号机制 最终解决了很多异常其中包括特殊字符文件名异常,导致线程异常,的报错 以及sqll 阅读全文
posted @ 2020-03-26 23:21 小石头的一天 阅读(195) 评论(0) 推荐(0)
c#跨线程访问的代码和窗体关闭退出死循环的代码
摘要:一:一段跨线程访问,给页面内的控件赋值的代码找了半天没找到,还得找了以前写的程序. 在这记下来吧 . 这是其他程序内可以跨线程访问的代码 . 二:这个是关闭创体内的while 循环的bug ,正常情况下关闭窗体,窗体内有死循环的话,窗体关闭了,程序还在后台运行. 解决方法: 1:在窗体的FormCl 阅读全文
posted @ 2018-11-08 17:05 小石头的一天 阅读(1203) 评论(0) 推荐(0)
c#子线程线程中操作窗体更新的报错
摘要:用 在执行上传时,由于操作较长窗体界面卡住,于是用task解决 Task t1 = new Task(manage.UploadData); t1.Start(); 结果不卡了,程序也传完了,运行到更新控件状态时报错, 看来task内控制窗体存在跨线程的问题,尽管我的model模块里边用了invok 阅读全文
posted @ 2018-05-04 18:09 小石头的一天 阅读(829) 评论(0) 推荐(0)
c# 上传excel数据总结(一)线程的使用
摘要:1: 因为程序涉及到上传,开始暂停,继续,删除, thread 在老版本用使用th.Abort(); th.Resume(); 停止 恢复 th.Suspend(); 挂起 猛的一看挺合适啊..但微软已经明确指出已经过时了. 在使用的过程中,几个状态来回切换几次,很容易出现问题, 判断了好多种状态, 阅读全文
posted @ 2017-10-17 15:23 小石头的一天 阅读(667) 评论(0) 推荐(0)
c#task list waitall task waitany
摘要:上边的主线程会被卡住: 7个同时开发,谁先完成之后, 需要完成某个工作,可以用waitany 2: 不卡界面的做法 加上以上命令就不卡,是子线程做的事 阅读全文
posted @ 2017-09-14 10:40 小石头的一天 阅读(3815) 评论(0) 推荐(1)
c# 运行大运算程序主窗体卡掉的解决
摘要:写了一个运算过滤大文本的程序, 其中方法里边使用了多线程,并行线程等方法. 但主窗体控件直接使用此方法时,页面卡顿.所以主线程被堵塞. 代码如下, splitfile 这个方法运行时页面卡顿,阻塞了主线程 改成这样: 涉及到方法里边访问控件的问题,所以要使用专门为ui 主线程留下的invoke 阅读全文
posted @ 2017-08-31 11:04 小石头的一天 阅读(338) 评论(0) 推荐(0)
c# Parallel.For 并行编程 执行顺序测试
摘要:因为有个for 实际执行结果尽管是按照for里边的顺序执行,但处理器让哪个分线程先执行,谁先处理完就不一定了. 对于要求结果需要先后顺序的,比如对text内容的操作, 用并行 Parallel.For 操作,不做进一步优化处理,那结果就不是想要的了,还要l用它的并行的功能所以要多程序进行改进, 我使 阅读全文
posted @ 2017-08-15 16:03 小石头的一天 阅读(1514) 评论(0) 推荐(0)
说说C#的async和await 解决卡顿问题 转
摘要:C# 5.0中引入了async 和 await。这两个关键字可以让你更方便的写出异步代码。 看个例子: 可以看到,async和await关键字只是把上面的代码变得更简单易懂而已。 上面在MyClass的构造函数里调用了async关键字标记的异步方法DisplayValue(),DisplayValu 阅读全文
posted @ 2016-12-30 22:47 小石头的一天 阅读(935) 评论(0) 推荐(0)
AutoResetEvent waitone set进一步理解补充
摘要:AutoResetEvent 的定义 //定义两个信号锁 AutoResetEvent ReadTxt = new AutoResetEvent(false); AutoResetEvent UploadTxt = new AutoResetEvent(false); 默认是false 也就是关闭状 阅读全文
posted @ 2016-11-21 11:36 小石头的一天 阅读(4056) 评论(0) 推荐(0)
AutoResetEvent信号锁 waitone set 执行一次线程退出 挺不爽的地方
摘要:下边有个 循环调用线程写奇偶数的程序 此时两个线程执行方法都在循环中没问题 ,程序是交互进行的,ateA 先执行,然后waitone ,等待ateB执行完发送set信号。 把其中一个循环去掉, ateB.set()信号也没用了,线程已经关闭了,运行一次就关闭了,当然应该考虑到线程启动关闭的运行效率, 阅读全文
posted @ 2016-11-18 17:07 小石头的一天 阅读(972) 评论(0) 推荐(0)