摘要:
什么是泛型 我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int数据,另一个是处理string数据,或者其他自定义的数据类型,但我们没有办法,只能分别写多个方法处理每个数据类型,因为方法的参数类型不同。有没有一种办法,在方法中传入通用的数据类型,这样不就可以合并代码了吗?泛型的出现 阅读全文
摘要:
4.0用 Task.Factory.StartNew(()=>{}); 4.0以下用 ThreadPool.QueueUserWorkItem(()=>{}) 4.0以上用 Task.Run(()=>{}); 多任务: Task[] tasks = new Task[maxCurrent]; for 阅读全文
摘要:
博主要做一个手机和电脑端(C#)通讯的程序,便览了网络上关乎socket的东西。但是接收文件的时候卡住了,怎么也接收不全。后来做了分片处理,如果分片,发送的时候就会有不同的socket(客户端开发不是我,故我不能控制人家怎么发),结果撞山了。 因为发送的时候for循环发,导致不是有重帧就是丢失,故进 阅读全文
摘要:
在真实的项目中,有的对象有相当多的事件,例如一个窗体就有好多种事件。默认情况下,当声明事件时,编译器将内存分配给一个事件字段,一存储事件信息。如果类中有好多事件未使用,则他们会不必要的占用内存。 这种情况下,.NETFramework提供了EventHandlerList类来减少内存的占用。它可以被 阅读全文
摘要:
一、事件和委托的关系事件(event)是基于windows消息处理机制的类,封装的更好,让开发者无须知道底层的消息处理机制,就可以开发出强大的基于事件的应用程序来。委托(delegate)委托可以理解成为函数指针,不同的是委托是面向对象,而且是类型安全的,并且衍生出Task,Action,Func等 阅读全文
摘要:
文中所有Task<TResult>的返回值都是直接用task.result获取,这样如果后台任务没有执行完毕的话,主线程会等待其执行完毕,这样的话就和同步一样了(看上去一样,但其实await的时候并不会造成线程的阻塞,web程序感觉不到,但是wpf,winform这样的桌面程序若不使用异步,会造成U 阅读全文
摘要:
Parallel是循环中开启多线程 循环List<T> 阅读全文
摘要:
Task是.NET4.0加入的,跟线程池ThreadPool的功能类似,用Task开启新任务时,会从线程池中调用线程,而Thread每次实例化都会创建一个新的线程。 我们可以说Task是一种基于任务的编程模型。它与thread的主要区别是,它更加方便对线程进程调度和获取线程的执行结果。 Task类和 阅读全文
摘要:
Semaphore负责协调线程,可以限制对某一资源访问的线程数量 这里对SemaphoreSlim类的用法做一个简单的例子: 可以看到,刚开始只有三个线程在执行,当一个线程执行完毕并释放之后,才会有新的线程来执行方法! 阅读全文
摘要:
WPF中使用Console.Write函数来打印信息是没有意义的,因为并没有给其输出字符的窗口。对于桌面程序来说,这是十分合理的,然而有时为了方便调试,在程序编写过程中打印出信息给程序员看还是必要的,利用Windows的API,在DEBUG的时候打开一个控制台窗口以供信息打印显示。 创建一个管理类 阅读全文