随笔分类 -  Multithreading Asynchronous

多线程 异步
摘要:有时我们不希望我们的WPF应用程序可以同时运行有多个实例,当我们试图运行第二个实例的时候,已经运行的实例也应该弹出来。我们可以用Mutex来实现打开App.xaml.cs,在App类中添加如下内容 public partial class App : Application { [DllImport("user32", CharSet = CharSet.Unicode)] static extern IntPtr FindWindow(string cls, string win); [DllImport("user32")] ... 阅读全文
posted @ 2013-07-04 22:09 DebugLZQ 阅读(3940) 评论(6) 推荐(5) 编辑
摘要:C#发展至今,已经从最初的1.0到了5.0版本,其进化史如下,参考了C# 5.0 IN A NUTSHEL:让我们来回顾一下各个版本都带来了什么:1.0版本 - 基本C#语法。2.0版本 - 泛型的支持,CLR进行了升级,从根本上支持了运行时泛型。3.0版本 - LINQ,添加了from / joi... 阅读全文
posted @ 2013-04-07 23:54 DebugLZQ 阅读(4041) 评论(2) 推荐(5) 编辑
摘要:C#5.0最大的新特性,莫过于Async和Parallel。 以往我们为了让用户界面保持相应,我们可以直接使用异步委托或是System.Threading命名空间中的成员,但System.Threading.Tasks命名空间提供了一种更加简洁的方法---使用Task类。Task类可以轻松地在次线程中调用方法,可以作为异步委托的简单替代品。 关于Async,可以参考MSDN的Task 类以及使用 Async 和 Await 的异步编程(C# 和 Visual Basic),其介绍了其中的方法、属性等,讲的都比LZ要好。 下面我们实现一个异步调用的例子,看看用法有什么不同。 我想要的... 阅读全文
posted @ 2013-04-06 11:17 DebugLZQ 阅读(3430) 评论(2) 推荐(1) 编辑
摘要:出于MVVM学习的需要,复习下匿名方法和Lambda表达式,因为之前用的也比较少,所以用的也不是很熟练,Baidu下相关的知识,写了这个Demo,目标是用简单的方法展示这个怎么用。这里偏重的和LINQ中的Lambda表达式var filesLookup = files.ToLookup(f=>f.Substring(f.LastIndexOf('.')).ToUpper());有些不同,两种不同的地方使用吧。DebugLZQ把要写的话,都写在Demo的注释中了,相关类似的东西网上很多,这里就不墨迹了,如下:using System;namespace 匿名函数和Lambd 阅读全文
posted @ 2012-12-06 22:34 DebugLZQ 阅读(738) 评论(0) 推荐(0) 编辑
摘要:本博文接着上几篇LINQto Object和多线程的相关博文,用LINQ to Object和多线程实现文件查找与分组的Demo作为LINQ to Object 的一个小结。程序的功能如下:点击界面右上角按钮选择一个文件夹,多线程加载文件,LINQ进行相关的查询,实现分组查找等功能。程序的注释中,DebugLZQ加入了很详细的注释,以及,LZ代码写作的流程,因此这里不做更多的介绍,LINQ和多线程的相关技能请参考DebugLZQ前面的几篇博文。代码如下:using System;using System.Collections.Generic;using System.ComponentMod 阅读全文
posted @ 2012-11-13 19:01 DebugLZQ 阅读(2086) 评论(9) 推荐(3) 编辑
摘要:本片博文接上一篇:.NET多线程执行函数,给出实现一个线程更新另一个线程UI的两种方法。Winform中的控件是绑定到特定的线程的(一般是主线程),这意味着从另一个线程更新主线程的控件不能直接调用该控件的成员。控件绑定到特定的线程这个概念如下:为了从另一个线程更新主线程的Windows Form控件,可用的方法有:首先用一个简单的程序来示例,这个程序的功能是:在Winfrom窗体上,通过多线程用label显示时间。给出下面的两种实现方式1.结合使用特定控件的如下成员 InvokeRequired属性:返回一个bool值,指示调用者在不同的线程上调用控件时是否必须使用Invoke()方法。如果主 阅读全文
posted @ 2012-11-12 19:40 DebugLZQ 阅读(13247) 评论(11) 推荐(6) 编辑
摘要:前面几篇文章一直在写LINQ,这里为什么会出现多线程?原因是DebugLZQ在写一个LINQ综合Demo的时候遇到了多线程,便停下手来整理一下。关于多线程的文章,园子里很多很多,因此关于多线程理论性的东西,LZ就不去多说了,这篇博文主要是用最简单的例子,总结下多线程调用函数的相关注意点,重点偏向应用和记忆。1.多线程调用无参函数 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace 多线程{ class Pro... 阅读全文
posted @ 2012-11-11 21:55 DebugLZQ 阅读(10412) 评论(6) 推荐(2) 编辑
摘要:最近因为工作的事情想了很多,此处略去三千字吧。。。还是把事件这个技术拿过来沉淀一下,继续学习,继续提高自己,好吧,废话不多说,进入正题吧~关于事件各位应该都不陌生,相信每个程序员都可以拍着胸脯说“事件?我知道啊~”,可如何自定义事件?也许有人心中就不是那么底气十足了。还是老规矩吧,高手绕行~用很多地... 阅读全文
posted @ 2012-11-04 02:14 DebugLZQ 阅读(7978) 评论(15) 推荐(6) 编辑
摘要:最近很忙,既要外出找工作又要兼顾老板公司的项目。今天在公司,忙里偷闲,总结一下.NET中的异步调用函数的实现方法,DebugLZQ在写这篇博文之前自己先动手写了本文的所有示例代码,开写之前是做过功课的,用代码说话方有说服力。 本文的内容旨在用最简洁的代码来把异步调用的方法说清楚,园子里的高手老... 阅读全文
posted @ 2012-11-02 15:12 DebugLZQ 阅读(17611) 评论(23) 推荐(20) 编辑
摘要:最近很忙,因此拿出时间来写博客也算是忙里偷闲了,继承前面的一贯风格,继续浅谈胡侃。 最近在项目中遇到了Socket异步网络传输的问题,所以沉下心来整理下。于是,先问了下度娘,结果找到了园友志良的一篇文章《C#中异步和多线程的区别》(参考文献1),精读了一遍,个人觉得理解的很好,自己学习下之余,又动手加工了一下以分享给各位博友,希望各位博友能对异步和多线程有一个清楚的认识。 C#中异步和多线程的区别是什么呢?异步和多线程两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。甚至有些时候我们就认为异步和多线程是等同的概念。但是,异步和多线程还是有一些区别的。而这些区别造成了使用异步... 阅读全文
posted @ 2012-09-05 13:05 DebugLZQ 阅读(31187) 评论(11) 推荐(8) 编辑
摘要:上篇介绍了.net中可用的定时器,本片主要介绍.net中可用的计时器。第一种方法:使用Stopwatch Stopwatch 在基础计时器机制中对计时器的刻度进行计数,从而测量运行时间。如果安装的硬件和操作系统支持高分辨率性能的计数器,则 Stopwatch 类将使用该计数器来测量运行时间;否则,Stopwatch 类将使用系统计数器来测量运行时间。使用 Frequency 和 IsHighResolution 两个静态字段可以确定实现 Stopwatch 计时的精度和分辨率。 实际上它里面就是将QueryPerformanceCounter、QueryPerformanceFrequ... 阅读全文
posted @ 2012-08-05 11:54 DebugLZQ 阅读(1974) 评论(1) 推荐(2) 编辑
摘要:.net中的计时问题可能每个人都会遇到,但是很少有人系统的总结,Baidu了下,无果,故写作本文。本文旨在总结.net中可用的各种计时方法,介绍的是DebugLZQ知道的几种.net中的定时、计时方法。并进行了我所知道的分析(重点)和简单使用,并不涉及更深层次的讨论。进入正题: 定时器是系统常用的... 阅读全文
posted @ 2012-08-05 10:55 DebugLZQ 阅读(11511) 评论(5) 推荐(3) 编辑
摘要:Windows为什么要支持线程,进程与线程的联系与区别是什么? 在计算机的早期岁月,操作系统没有提供线程概念。事实上整个系统只运行着一个执行线程,其中同时包含操作系统代码和应用程序。只用一个执行线程的问题在于,长时间运行的任务会阻止其他任务执行。例如,在16位Windows的那些日子,打印一个文档的应用程序很容易“冻结”整个机器,造成OS和其他应用程序停止响应。有的应用程序含有bug,会造成无限循环,这同样会造成整个机器停止工作。 遇到这个问题,用户只好按Reset键或电源开关重启计算机。用户们对此感到深恶痛绝(事实上,现在一样会),因为所有正在运行的应用程序都会终止。更重要的是,这些... 阅读全文
posted @ 2012-04-25 13:59 DebugLZQ 阅读(466) 评论(0) 推荐(1) 编辑
摘要:System.Threading 命名空间提供一些使得可以进行多线程编程的类和接口。除同步线程活动和访问数据的类(Mutex、Monitor、Interlocked、AutoResetEvent 等)外,此命名空间还包含一个 ThreadPool 类(它允许用户使用系统提供的线程池)和一个 Timer 类(它在线程池线程上执行回调方法)... 阅读全文
posted @ 2012-04-21 21:17 DebugLZQ 阅读(452) 评论(1) 推荐(1) 编辑