2021-07-19 22:54:47
勇哥来测试一下全部的查询运算符。每天测试一部分,代码会持续更新中……using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Consol...
2021-07-16 22:18:06
C#的事件、委托测试(一) http://www.skcircle.com/?id=1853C#的事件、委托测试(二) http://www.skcircle.com/?id=1854C#的事件、委托测试(三) http://www.skcircle.com/?id=1820勇哥注:事件委托的小练习,大家不要轻视这些基本功哦。第一个程序:目的:我们有个高档的热水器,我们给它通上电,当水温超过...
2021-07-16 21:08:30
C#的事件、委托测试(一) http://www.skcircle.com/?id=1853C#的事件、委托测试(二) http://www.skcircle.com/?id=1854C#的事件、委托测试(三) http://www.skcircle.com/?id=1820勇哥注:事件委托的小练习,大家不要轻视这些基本功哦。第一个程序这是个传统的写法,GreetPeople必须使用swit...
2021-07-16 17:19:40
见贴子:(一)https://blog.csdn.net/kuhaizhengzha/article/details/89225758 (二)https://blog.csdn.net/kuhaizhengzha/article/details/89296198?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogC...
2021-07-16 16:11:30
勇哥注:这是一篇相当精彩的问题贴子,来源于msdn论坛的讨论,它提供了相当多的办法来解决同步方法中调用异步方法的办法。非常值得一读!我有一个public async void Foo()方法,我想从同步方法中调用它。 到目前为止,我从MSDN文档中看到的所有内容都是通过异步方法调用异步方法,但是我的整个程序不是使用异步方法构建的。这有可能吗?这是从异步方法调用这些方法的一个示例: http : /...
2021-07-16 15:26:43
C#4.0的并行库TPL,即Task(一)http://www.skcircle.com/?id=1793C#4.0的并行库TPL,即Task(二) http://www.skcircle.com/?id=1798C#4.0的并行库TPL,即Task(三) http://www.skcircle.com/?id=1808C#4.0的并行库TPL,即Task(四) http://www.skcir...
2021-07-16 09:51:52
勇哥注: 通过这个问答贴子,可以了解一些C#历史版本对于 Task捕获异常的一些不同处。提问者:----------------------------------------使用System.Threading.Tasks.Task<TResult>,我必须管理可能引发的异常。我正在寻找做到这一点的最佳方法。到目前为止,我已经创建了一个基类,该基类在调用时管理所有未捕获的异常。.Co...
2021-07-16 09:40:09
勇哥注:这个提问者对异步的误解决,让勇哥想到同事持相似观点,认为异步只不过是用线程池在工作罢了。因此把知乎这篇问答摘下来,加深对异步的了解。提问者:---------------------------------------用async修饰的方法本身就是期望它为一个异步方法,可是为什么该方法内必须要有await?举个例子,有一个方法 double Factorial(int i),作用是计算i的...
2021-07-15 19:55:14
勇哥注:微软的这个在线C#编程指南可读性很高,颠覆了之前我对机械的在线手册式的那种文档的印象。除了异步的话题,其它的话题都很丰富,非常值得推荐阅读哦!基于任务的异步编程模型 (TAP) 提供了异步代码的抽象化。 你只需像往常一样将代码编写为一连串语句即可。 就如每条语句在下一句开始之前完成一样,你可以流畅地阅读代码。 编译器将执行许多转换,因为其中一些语句可能会开始运行并返回表示正在进行的工作的...
2021-07-15 19:53:41
作者:Mads Torgersen | 2011 年 10 月即将推出的 Visual Basic 和 C# 版本中的异步方法是从异步编程中获取回调的好方法。在本文中,我将仔细研究新的 await 关键字的实际作用,从概念层面开始,逐步深入研究。顺序组合Visual Basic 和 C# 是命令式编程语言,并以此为荣!这意味着它们擅长让您将您的编程逻辑表达为一系列离散步骤,一个接一个地进行。大多数...
2021-07-15 19:49:41
异步编程长期以来一直是只有最熟练和最受虐的开发人员的领域——那些有时间、倾向和心理能力来推理非线性控制流的一个又一个回调的回调。借助 Microsoft .NET Framework 4.5,C# 和 Visual Basic 为我们其他人提供了异步性,因此普通人几乎可以像编写同步方法一样轻松地编写异步方法。没有更多的回调。不再将代码从一个同步上下文显式编组到另一个同步上下文。不再担心结果或异常的...
2021-07-15 19:44:31
勇哥注:此文作者调研了许多国外大神的文章写下的记录,内含外链,特转载涨知识。在C#中,强烈不建议非async方法调用async方法,建议一路async/await下去。如果一定要非async方法调用async方法,建议按照以下的优先级使用:1. Task.Run(...).Result, 这种方式是新起了一个Task放在线程池中,参考: https://devblogs.microsoft.com...
2021-07-15 19:21:59
勇哥注:这是国外一位大神的权威贴子,转载一下继续涨下知识。近日来,涌现了许多关于 Microsoft .NET Framework 4.5 中新增了对 async 和 await 支持的信息。 本文旨在作为学习异步编程的“第二步”;我假设您已阅读过有关这一方面的至少一篇介绍性文章。 本文不提供任何新内容,Stack Overflow、MSDN 论坛和 async/await FAQ 这类在线资源提...
2021-07-15 19:13:57
一个老外的博客转载的,继续涨下知识。大多数人已经听说过 Visual Studio 11 中新的“async”和“await”功能。这是另一篇介绍性文章。首先,重点是:异步将从根本上改变大多数代码的编写方式。是的,我相信 async/await 会比 LINQ 产生更大的影响。理解异步将在短短几年内成为基本必需品。关键字介绍让我们直接开始吧。我将使用一些稍后将阐述的概念——请继续阅读第一部分。异步...
2021-07-15 17:23:03
勇哥注:文章很好,可惜部分链接已经失效了。有时,我会收到来自开发人员的问题,这些问题强调需要更多关于 C# 和 Visual Basic 中新的“async”和“await”关键字的信息。我一直在对这些问题进行分类,我想我会借此机会分享我对这些问题的答案。概念概述我在哪里可以很好地了解 async/await 关键字?通常,您可以在https://msdn.com/async的 Visual St...
2021-07-15 16:18:39
这是一个在论坛和 Stack Overflow 上反复提出的问题。我认为这是异步新手在学习了基础知识后最常问的问题。用户界面示例勇哥编写了下面的例子。单击按钮将启动 REST 调用并在文本框中显示结果(此示例适用于 Windows 窗体,但相同的原则适用于任何UI 应用程序)。using System;
using System.Collections.Generic;
using Syste...
2021-07-15 15:08:49
当你在一个Task执行中抛出异常,比如:Task.Factory.StartNew(() =>
{
throw new Exception();
});运行该方法,没有任何异常抛出。事实上此时Task的异常处于未觉察状态,这个未觉察状态的异常会在垃圾回收时终结器执行线程中被抛出。为了诱发这个异常,我们可以通过GC.Collect来强制垃圾回收从而引发终结器处理线程,此时Task...
2021-07-15 14:40:35
目录一、进程的概念与作用二、应用程序域三、深入了解.NET上下文四、进程应用程序域与线程的关系 四、进程、应用程序域、线程的相互关系4.1 跨AppDomain运行代码在应用程序域之间的数据是相对独立的,当需要在其他AppDomain当中执行当前 AppDomain中的程序集代码时,可以使用CrossAppDomainDelegate委托。把CrossAppDomainDelegate委托 绑定方...
2021-07-15 14:34:53
目录一、进程的概念与作用二、应用程序域三、深入了解.NET上下文四、进程应用程序域与线程的关系 三、深入了解.NET上下文3.1 .NET上下文的概念应用程序域是进程中承载程序集的逻辑分区,在应用程序域当中,存在更细粒度的用于承载.NET对象的实体,那就.NET上下文Context。所有的.NET对象都存在于上下文当中,每个AppDomain当中至少存在一个默认上下文(context 0)。一般不...
2021-07-15 14:30:57
目录一、进程的概念与作用二、应用程序域三、深入了解.NET上下文四、进程应用程序域与线程的关系 二、应用程序域使用.NET建立的可执行程序 *.exe,并没有直接承载到进程当中,而是承载到应用程序域(AppDomain)当中。应用程序域是.NET引入的一个新概念,它比进程所占用的资源要少,可以被看作是一个轻量级的进程。在一个进程中可以包含多个应用程序域,一个应用程序域可以装载一个可执行程序(*.e...
2021-07-15 14:24:53
引言本文主要是介绍进程(Process)、应用程序域(AppDomain)、.NET上下文(Context)的概念与操作。虽然在一般的开发当中这三者并不常用,但熟悉三者的关系,深入了解其作用,对提高系统的性能有莫大的帮助。在本篇最后的一节当中将会介绍到三者与线程之间的关系,希望对多线程开发人员能提供一定的帮助。因为时间仓促,文中有错误的地方敬请点评。目录一、进程的概念与作用二、应用程序域三、深入了...
2021-07-15 10:49:59
开发人员对Asnync 异步机制的兴趣程度很高。当然,任何新技术都必然会出现一些小问题。我现在多次看到的一个问题是开发人员通过阻止他们的 UI 线程意外地使他们的应用程序死锁,所以我认为花一些时间来探索这种情况的常见原因以及如何避免这种困境是值得的。就其核心而言,新的异步语言功能旨在恢复开发人员编写他们习惯编写的顺序、命令式代码的能力,但使其本质上是异步的而不是同步的。这意味着当操作以其他方式占用...
2021-07-15 10:41:14
在C#中我最喜欢的特性就是LINQ。使用LINQ, 我们可以获得一种易于编写和理解的简洁语法,而不是单调的foreach循环,它可以让你的代码更加美观。但是LINQ也有不好的地方,就是调试起来非常难。我们无法知道查询中到底发生了什么。我们可以看到输入值和输出值,但是仅此而已。当代码出现问题的时候,我们只能盯着代码看吗?答案是否定的,这里有几种可以使用的LINQ的调试方法。LINQ调试尽管很困难,但...
2021-07-15 08:44:58
今天勇哥又遇到这个问题。之前我在一篇贴子里谈过这个话题,见下面:关于VS2013或者VS2017打开工程时反复崩溃重启的问题 http://www.skcircle.com/?id=403 主要原因其实是因为第三方用户自定义控件惹的祸。你可以回忆一下,自从加了哪个自定义控件后,出现了UI编辑器打开崩溃的问题。然后就去这个form的 Designes.cs文件里面把它注释掉,就可以了。接下来就是...
2021-07-14 16:52:08
C#4.0的并行库TPL,即Task(一)http://www.skcircle.com/?id=1793C#4.0的并行库TPL,即Task(二) http://www.skcircle.com/?id=1798C#4.0的并行库TPL,即Task(三) http://www.skcircle.com/?id=1808C#4.0的并行库TPL,即Task(四) http://www.skcir...
2021-07-13 11:48:15
节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing)。 内存映射文件对于托管世界的开发人员来说似乎很陌生,但它确实已经是很远古的技术了,而且在操作系统中地位相当。实际上,任何想要共享数据的通信模型都会在幕后使用它。 内存映射文件究竟是个什么?内存映射文件允许你保留一块地址空间,然后将该物理存储映射到这块内存空间中进行...
2021-07-12 20:30:39
勇哥继续谈一下异步中的任务取消机制CancellationToken和CancellationTokenSource。 之前做开发时,一直没注意这个东西,做了.net core之后,发现CancellationToken用的越来越平凡了。 这也难怪,原来.net framework使用异步的不是很多,而.net core首推异步编程,到处可以看到Task的影子,而CancellationTok...
2021-07-11 09:52:54
C# 外观模式(Facade)http://www.skcircle.com/?id=1827 有关外观模式见下面贴子,下面是勇哥编写的一个例子。FundClass.csusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace facadeTest1...
2021-07-11 09:42:26
1. 外观模式简介 外观模式主要解决的问题:当有多个类要处理时,需要一个个类去调用,没有复用性和扩展性。外观模式将处理子类的过程封装成操作,简化客户端的调用过程。1.1 定义 外观模式(Facade)通过提供一个统一接口,来访问子系统的多个接口。 使用外观模式时,创建一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直接通过外观类来调用内部子系统中方法。 外观模式让客户端与子系统...
2021-07-10 23:06:22
资源列表:业务逻辑BLLusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace student
{
public class StudentInstance
{
public DataChange onDataC...