摘要: 任务也可以构成一个层次结构。一个任务启动一个新任务时,就启动了一个层次结构。下面的代码段在父任务内部新建一个任务。创建子任务的代码与创建父任务的代码相同,唯一的区别是这个任务从另一个任务内部创建: 1: static void Main(string[] args) 2: { 3: Task parentTask = new Task(Par... 阅读全文
posted @ 2012-08-12 17:54 Mysterious One 阅读(2185) 评论(4) 推荐(5) 编辑
摘要: 通过任务,可以指定在任务完成后,应开始运行另一个特定任务。任务处理程序或者不带参数或者带一个对象参数,而连续处理程序有一个Task类型的参数。下面先定义两个任务: 1: static void FirstTaskMethod() 2: { 3: Console.WriteLine(String.Format("Task {0} is doin... 阅读全文
posted @ 2012-08-12 00:42 Mysterious One 阅读(3352) 评论(5) 推荐(2) 编辑
摘要: .Net Framework 4.0新增了一个System.Threading.Tasks命名空间,它包含的类提供了任务的相关操作。使用任务不仅可以获得一个抽象层,还能对底层线程进行很多统一的控制操作。这里先介绍一下Task的简单使用。 最基本的是知道怎么启动一个Task。 1、Task类构造函数 使用Task类的构造函数。实例化Task对象时,任务不会立即运行,而是指定Created状... 阅读全文
posted @ 2012-08-11 20:05 Mysterious One 阅读(34856) 评论(5) 推荐(4) 编辑
摘要: 在需要创建的线程很多,且都是比较小的线程的情况下,可以使用线程池(ThreadPool类)。ThreadPool是一个静态方法,提供了对一个线程集合的操作,它会在线程数不足时增加线程,空闲线程数过多时释放资源。1、ThreadPool简单应用调用ThreadPool.QueueUserWorkItem()方法,传递一个WaitCallBack委托类型的方法,并把这个方分配给线程池中的线程。线程池是自动运行的,如果线程池还没有运行,就会创建一个线程池,并启动第一个线程。如果线程池己经在运行,且有一个空闲线程来完成该任务,就把该作业传递给这个线程。下面这个方法是一个符合WaitCallBack委托 阅读全文
posted @ 2012-08-11 16:51 Mysterious One 阅读(18087) 评论(7) 推荐(4) 编辑
摘要: .Net Framework提供了Thread类,它可以创建和控制线程。Thread的构造方法可接受一个无参无返回值的委托类型参数,或一个有object类型参数无返回值的委托类型参数。 1、简单的Thread类实例 先创建两个方法,分别用于两个线程处理: 1: static void ThreadMethod1() 2: { 3: for (int j = 0; j < 20; j++) 4: { 5: Console.WriteLine("Thread 1 is run... 阅读全文
posted @ 2012-08-11 00:51 Mysterious One 阅读(3844) 评论(2) 推荐(2) 编辑
摘要: 异步的实现即多线程,一种简单的方式就是创建一个委托,然后异步调用它。 .Net Framework已经为我们提供了委托的异步调用方法。下面介绍三种使用委托实现异步的方法。1、投票(IsCompleted属性)首先定义一个委托: 1: public delegate string MyDelegate(int ms);Delegate类提供了BeginInvoke()方法,这个方法返回一个IAsyncResult接口,这个接口包含了该委托的相关信息,并且可以通过它的IsCompleted属性来判断该委托是否执行完成。下面是将要异步调用的方法: 1: static string Deleg... 阅读全文
posted @ 2012-08-10 03:56 Mysterious One 阅读(5470) 评论(7) 推荐(1) 编辑
摘要: 上次写了关于Trigger和Action的文章(Silverlight中的Action和Trigger),这次写一个Behavior的。Behavior的目的在于封装部分UI功能,那样就可以直接应用于元素而不用写任何代码。Behavior是一组相关操作的组合,它包含了Trigger和Action的工作。简单的说就是Trigger和Action的合体。听说过Behavior的人一说到Behavior很容易想到拖动效果,这里我就做一个简单的在Canvas里的拖动行为。创建自定义Behavior需要从Behavior<DependencyObject>继承,并覆盖OnAttached和O 阅读全文
posted @ 2012-06-29 01:43 Mysterious One 阅读(1497) 评论(1) 推荐(2) 编辑
摘要: 最近做的Silverlight项目上用到了大量的拖拽,自动跟随等功能,由于赶时间,加上对Silverlight半生不熟,用的是最简单也是最不好维护的方法。项目忙完了闲下来,想重构一下代码,想起了Trigger和Action这两个东西,当初接触这两个东西不深,只是认识,不知道用。现在正好可以好好学习一下,参考了重多大神的代码之后,终于初步熟悉了它们。这里分享一下我对Trigger和Action的认识。我用一个最简单的例子来说明Action与Trigger,点击一个Button弹出MessageBox。建立一个Silverlight Application,引用System.Windows.Int 阅读全文
posted @ 2012-06-28 04:06 Mysterious One 阅读(3130) 评论(1) 推荐(0) 编辑
摘要: 血的教训。花了一翻功夫用Javascript写了个处理Excel的前台程序,用100行小数据量的Excel测试成功,效果比较理想。提交用户开始使用之后发现了个严重的问题,用户在处理超过2000行的Ex... 阅读全文
posted @ 2012-06-04 04:42 Mysterious One 阅读(1676) 评论(0) 推荐(0) 编辑
摘要: 最近在做Silverlight应用,需要用Silverlight调用页面中Javascript方法。这个JS方法返回一个对象数组给Silverlight。对于这个对象数组怎么在Silverlight里... 阅读全文
posted @ 2012-06-02 21:16 Mysterious One 阅读(1354) 评论(0) 推荐(0) 编辑