`
jiasongmao
  • 浏览: 671442 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

Framework 4.0之线程新特性

    博客分类:
  • .NET
 
阅读更多

 

 

1.博客园文章:线程阶段性总结——APM,ThreadPool,Task,TaskScheduler ,CancellationTokenSource

http://www.cnblogs.com/xiashengwang/archive/2012/08/18/2645588.html

 

2.博客园文章:C# 线程知识--使用Task执行异步操作

http://www.cnblogs.com/pengstone/archive/2012/12/23/2830238.html

 

3.博客园文章: Metro Style App 异步-简洁而不简单的异步

http://www.cnblogs.com/trigged/archive/2012/03/09/2388182.html

 

4.博客园文章:异步编程中的最佳做法

http://www.cnblogs.com/LittleFeiHu/p/4604179.html

 

5.博客园文章:async And await异步编程活用基础

http://www.cnblogs.com/x-xk/archive/2013/06/05/3118005.html

 

注意事项:

1. 有async 则必须有await ,异步方法的返回类型必须是Task<T>

2. 被async 标记的方法一定是异步方法,异步方法的返回值必须为void、Task、Task<T>

3. 没被async标记修饰,但返回值为Task、Task<T>的方法也是异步方法

4. await 关键字后的方法一定是异步方法

5. 方法中如果使用了await关键字,那么该方法也应该被async关键字修饰

6. 使用await(await  GetResult(100))关键字,会使程序等待返回结果后再继续向下执行代码,但不会阻塞UI线程 

 

 

 

 

 

 

参考代码:

static CancellationTokenSource cancellation = new CancellationTokenSource(3000);

        private static void CanceltionDemo()
        {

            Task<int> task = new Task<int>(() => { return GetNumber(500); }, cancellation.Token);


            task.ContinueWith(t => {
                if (t.IsFaulted == false && t.IsCanceled == false)
                {
                    int data = t.Result;
                    Console.WriteLine(data);
                }
                else
                {
                    Console.WriteLine("error");
                }
            });

            cancellation.Token.Register(() => { Console.WriteLine("task is be canceled..."); });


            task.Start();

        }

        private static int GetNumber(int number)
        {
            if (cancellation.IsCancellationRequested)
            {
                cancellation.Token.ThrowIfCancellationRequested();
            }
            if (number == 1 || number == 2)
            {
                return 1;
            }
            return GetNumber(number - 2) + GetNumber(number - 1);
        }


        private static void ContinueWithDemo()
        {
            var result = DoWorkAsync().ContinueWith(task => {


                Console.WriteLine(task.Result);

            }, TaskContinuationOptions.None);
        }

        private static void ResultPropertyDemo()
        {
            var result = DoWorkAsync().Result;
            Console.WriteLine(result);
        }

        static Task<string> DoWorkAsync()
        {
            return Task<string>.Factory.StartNew(() =>
            {
                throw new Exception("error");
                Thread.Sleep(3000);
                return "Hello world...";
            });
        }

 

 

 

 

 

优秀的教材:

1. Pro ASP.NET WEB API

 

 

分享到:
评论

相关推荐

    .net framework 4.0安装环境

    1. **公共语言运行时(CLR)**:这是.NET Framework的核心,负责执行代码、管理内存、处理异常、线程管理和安全特性。 2. **类库**:提供丰富的预定义类,覆盖了网络通信、数据库访问、图形界面设计等多个领域,...

    .NET Framework 4.0全

    在.NET Framework 4.0中,C#引入了一些新特性,如动态类型(dynamic)、命名空间别名(using alias)、匿名类型(anonymous types)和LINQ(Language Integrated Query),极大地提高了开发效率和代码质量。...

    .NET FrameWork 4.0.30319

    .NET Framework 4.0.30319引入了多个新特性,例如: 1. **改进的性能**:通过优化CLR和FCL,提高了应用程序的运行速度和响应性,特别是在并行计算和多线程方面有显著提升。 2. **异步编程模型**:引入了Task ...

    Framework4.0+中文汉化包

    首先,.Net Framework 4.0在编程模型上进行了改进,引入了新的编程语言特性,如动态类型、任务并行库(TPL)、以及异步编程模型,极大地提高了代码的可读性和执行效率。动态类型允许在运行时确定对象的类型,增加了...

    .net framework 4.0运行环境

    .NET Framework 4.0的兼容性设计使得开发者可以利用这些新功能编写程序,而用户通过安装相应的框架版本,即便在较旧的操作系统上也能运行这些程序。 ".NET Framework 4.0"这个标签明确了主题,表明这个压缩包是针对...

    netFramework4.0.rar

    6. **并发和多线程**:.NET Framework 4.0引入了Task Parallel Library(TPL),这是一组用于编写多线程和并行代码的新API,使得开发者能够轻松利用多核处理器的优势。 7. **代码访问安全性**:安全性方面,.NET ...

    .net Framework4.0

    .NET Framework 4.0是.NET Framework系列的一个重要版本,它包含了大量新特性和性能优化。这一版本主要改进了内存管理,提升了运行时性能,增强了语言支持,特别是对C#和Visual Basic的增强。同时,它引入了新的编程...

    NetFramework4.0.30319.rar

    下载并安装"NetFramework4.0.30319.exe"文件,即可将.NET Framework 4.0.30319添加到您的系统中,为运行依赖该版本的应用程序提供必要支持。请确保在安装前检查系统兼容性和任何可能的更新,以保证最佳的运行效果。...

    netframework4.0.rar

    在本案例中,"netframework4.0.rar"是一个压缩包,包含了.NET Framework 4.0的手动安装程序,名为"dotNetFx40.exe"。 .NET Framework的核心组件包括Common Language Runtime (CLR) 和 .NET Framework Class Library...

    .NET Framework 4.0全.rar

    .NET Framework 4.0引入了许多新特性,包括性能提升、编程模型的改进以及对并行计算的支持。其中,CLR 4.0的改进主要体现在垃圾收集(Garbage Collection)的优化,使得内存管理更加高效;而BCL的更新则增强了集合...

    Microsoft XNA Framework 4.0

    此外,XNA 4.0引入了对DirectX 11的支持,允许开发者利用更先进的图形特性,如Shader Model 5.0和多线程渲染。对于Windows Phone 7平台,XNA 4.0提供了更好的设备兼容性和性能提升。 XNA Framework的一个重要特性是...

    .net framework 4.0 这个上传错了

    7. **编程语言增强**:C# 4.0和VB.NET 10.0引入了新的语言特性,如动态类型、命名参数和可选参数,提高了代码的可读性和简洁性。 8. **互操作性**:提升了与COM组件、WinRT(Windows Runtime)和非托管代码的互操作...

    .net4.0安装程序.net framework 4.0安装包

    在.NET Framework 4.0中,引入了一些显著的改进和新特性。例如,性能得到了大幅提升,尤其是在内存管理和多线程处理方面。另外,新增了Parallel LINQ (PLINQ) 支持,使得开发者可以轻松地编写并行代码,充分利用多核...

    Mircosoft.Net_Framework_4.0

    .NET Framework 4.0的另一个显著特性是对动态语言的支持,引入了Dynamic Language Runtime (DLR)。这使得.NET Framework能够更好地支持如IronPython和IronRuby等动态语言,为开发者提供了更多选择和灵活性。 在安全...

    .net framework4.0 x64_x86简体中文语言包

    .NET Framework 4.0的主要改进和新特性包括: 1. **性能提升**:通过优化编译器和垃圾回收机制,提高了代码执行效率,使得应用程序运行更快。 2. **并行计算支持**:引入了Task Parallel Library(任务并行库),...

    dotNET Framework 4.0

    这个框架是.NET Framework系列的一个重大升级版本,带来了许多新的特性和改进,旨在提高开发效率和应用程序性能。 首先,.NET Framework 4.0引入了CLR(Common Language Runtime)的更新版本——CLR 4.0。这一版本...

    .netFramework 4.0

    10. 并发和多线程:.NET Framework 4.0对多核处理器的支持进行了优化,提供了新的并发编程模型,如Task Parallel Library (TPL) 和 Concurrent Collections,帮助开发者编写出更高效、更易管理的多线程应用。...

    net.framework-4030319.zip

    此外,.NET Framework 4.0引入了一些新的特性和改进,例如改进的垃圾回收机制、多线程支持的增强、更高效的代码执行以及对动态语言的支持(如C# 4.0中的动态类型)。这些特性使得开发人员能够编写出更高效、更灵活的...

    net framework4.0

    安装.NET Framework 4.0后,开发者可以利用这些新特性和改进,创建出更高效、更健壮的Windows应用程序。同时,.NET Framework 4.0也向下兼容早期版本的.NET应用程序,确保了软件的兼容性和稳定性。 总结来说,.NET ...

    .NET Framework4.0安装与使用

    在本文中,我们将深入探讨.NET Framework 4.0的安装过程、使用方法以及其主要特性。 1. **安装.NET Framework 4.0** - **系统需求**:在安装.NET Framework 4.0之前,确保你的操作系统满足最低要求,例如Windows ...

Global site tag (gtag.js) - Google Analytics