C#笔记
goodStudyAndUp
这个作者很懒,什么都没留下…
展开
-
异步编程
采用异步编程的理由:1.避免后台任务阻塞UI线程2.避免CPU浪费时间等待I/操作O3.需要所有处理器为我所用由于切管线程的操作比较麻烦,如果只是执行短的任务,可能调度多个线程的开销,超过实际的代码开销。为了避免频繁创建线程而产生开销,每个托管进程维护一个线程池。为了避免切换线程而产生开销,因为建议使用任务task内部使用了线程池,且在把线程归还线程池之前,关于在同一个线程中顺序执行多个Task可以通过对多个委托对象的只能调度来实现,有效的避免了时间片浪费问题(小任务导致上下文频繁切换)T原创 2020-12-05 19:16:29 · 172 阅读 · 0 评论 -
C# 实现控制后台三个线程交替输出ABC的方法
问题:后台有三个线程,分别循环输出A,B,C 实现使得屏幕交替输出ABC.1.第一种方法比较简单,使用lock(obj),先声明一个多线程共享变量 比如int n-1;在lock中检查n的值,if(n==1) 输出A,并将n 赋值2,否则,空转。在第二个后台线程中 if(n==2)输出B,j将n=3.一次类推,这样的虽然结果是输出了ABC 但是感觉方法并不优雅2.方法2 采用信号量的办法,...原创 2020-03-26 23:43:43 · 1096 阅读 · 0 评论 -
WPF中的转换器
实现功能,当CheckBox勾选时,字体为红色,否则为绿色好处:可以将xaml代码和后台代码逻辑分离在某些情况下会非常方便上代码:<StackPanel> <StackPanel.Resources> <local:BoolToColor x:Key="boolToColor"></local:...原创 2020-02-13 20:09:23 · 297 阅读 · 0 评论 -
WPF中的数据绑定
数据绑定以是声明方式将控件与数据关联到一起的方法一个绑定(Bingding)关系又四个组件构成:1.绑定目标2.目标属性3.绑定源4.源属性DataContext控件定义一个数据源,该数据源可以绑定某个元素的所有子元素,常用一个类的实例来保存视图中大部分的数据,将窗口的DataContext设置为对象实例,从而将该类与视图中的属性绑起来。通常用于动态绑定到外部对象绑定到本地对象...原创 2020-02-13 16:46:54 · 328 阅读 · 0 评论 -
TextBox重新进入时内容全选
直接上代码:private void txtSearch_GotFocus(object sender, RoutedEventArgs e){Console.WriteLine(“focus”);txtSearch.SelectAll();}private void txtSearch_PreviewMouseLeftButtonDown(object sender, MouseBu...原创 2020-02-12 19:21:36 · 363 阅读 · 0 评论 -
C# 中的Monitor和thread.join
Lock内部调用的就是Monitor主要说Monitor的两个方法Monitor主要是用于多线程,控制线程的状态线程主要有三种状态①runing②wait③readypulse(obj)用于将线程从wait状态跟改为ready状态,当此线程执行完成时,或者此线程状态更改为wait时,将从ready状态中选择执行wait(obj),将线程从runing状态更改为wati状态,若要继...原创 2019-12-08 14:15:27 · 227 阅读 · 0 评论 -
CheckedListBox 实现RadioButton功能
使用CheckedListBox 实现RadioButton 的功能花费了一些时间,并且期间有各种Bug ,其中最头痛的是当对CheckedListBox 状态进行改变时,会再次出发函数本身,够成列传递函数,甚至死循环.后来探索下面方法可以有效的解决问题 private void checkedListBoxResult_ItemCheck(object sender, ItemCheck...原创 2018-12-07 09:33:10 · 535 阅读 · 0 评论 -
Response 和 Request 的区别
request对象是服务器对浏览器请求的封装,而response是服务器对服务器响应的封装。1.服务器接到一个http请求后,封装为一个request对象,用来取信息2 将信息封装为一个response对象,用来存信息3.将response解析,响应给浏览器eg:这段代码是使浏览器记住密码//首先请求浏览器中的Cookies,检查是否有该用户的账号信息,因此使用Reques.Cooke...原创 2019-01-05 16:36:25 · 1339 阅读 · 0 评论 -
ASP.NET内置对象
1.Response对象用于将数据从服务器发送回浏览器,允许数据作为请求的结果发送到浏览器中,提供响应信息,此外,可以用来在页面中输入数据,跳转,传递参数.2.Request当用户打开Wbe浏览器,从网站请求web页时,Web服务器收到一个Http请求,该请求包含用户,用户计算机,页面及浏览器的相关信息.3.Application用于共享应用程序级信息,即多个用户共享一个Applicat...原创 2018-12-26 09:28:11 · 344 阅读 · 0 评论 -
解决C#程序只允许运行一个实例的几种方法详解
方法一:使用线程互斥变量. 通过定义互斥变量来判断是否已运行实例.方法二:采用判断进程的方式,我们在运行程序前,查找进程中是否有同名的进程,同时运行位置也相同程,如是没有运行该程序,如果有就就不运行.在C#中应用System.Diagnostics名字空间中的Process类来实现方法三:全局原子法,创建程序前,先检查全局原子表中看是否存在特定原子A(创建时添加的),存在时停止创建,说明该程...原创 2019-01-14 14:36:58 · 341 阅读 · 0 评论 -
C#对excel 的操作
直接上源码原创 2019-01-10 09:31:17 · 2650 阅读 · 1 评论 -
关于颜色
颜色由红色、绿色、蓝色混合而成颜色名列表单击一个颜色名或者 16 进制值,就可以查看与不同文字颜色搭配的背景颜色颜色列表原创 2019-01-21 11:58:47 · 272 阅读 · 0 评论 -
Web系统的三层架构以及MVC架构
整个业务应用划分为表示层,逻辑层,数据层,利于以后的开发,维护,部署分层是为了实现高聚合,低耦合,采用分而治之的思想1.表示层:直接跟用户进行交互,一般指的是系统的界面,用于数据的录入,数据显示等,只处理与外界显示相关的工作2.逻辑层用于做一些有效性的验证,保证程序的健壮性,如完成数据的添加,修改,查询业务等3.数据层专门跟数据库进行交互,执行数据的添加,删除,修改,显示,所有的数据...原创 2018-12-14 09:05:22 · 1277 阅读 · 0 评论 -
Winform中的双缓冲
(1)在应用程序中使用双缓冲的最简便的方法是使用 .NET Framework 为窗体和控件提供的默认双缓冲。通过将 DoubleBuffered 属性设置为 true。 this.DoubleBuffered=true;(2)使用 SetStyle 方法可以为 Windows 窗体和所创作的 Windows 控件启用默认双缓冲,在窗体或者控件的构造函数中添加如下代码即可: SetSty...原创 2018-12-05 14:51:02 · 1995 阅读 · 0 评论 -
Winfrom中数据的双向绑定(使用INotifyPropertyChanged)
在WPF中新建项目是自动实现了INotifyPropertyChanged接口,用于数据绑定时非常的方便在winfrom中也可以实现INotifyPropertyChanged接口将需要绑定的字段写到一个类中,用这个类实现INotifyPropertyChanged接口 public class User : INotifyPropertyChanged { publ...原创 2018-10-15 10:00:24 · 2244 阅读 · 2 评论 -
FileStream,StreamReader,StreamWiter的用法
1.FileStream 读取文件FileStream读取的文件为字节数组,与文件格式无关.(文件在内存中的真实状态为二进制保存) FileStream fs = new FileStream(filePathAndName, FileMode.Open, FileAccess.Read); byte[] FileByte = new ...原创 2018-10-09 08:46:02 · 1301 阅读 · 0 评论 -
使用Compression对文件流进行压缩后写入数据库
文件转换成二进制流后,将二进制流保存到数据库相应的字段中,文件稍大时,将严重影响数据库的性能因此,我们可以将文件进行压缩后在进行存储.这里我们使用System.IO 中的Compression类进行压缩(在 4.5 之前,处理压缩文件,我们经常需要使用第三方的类库 SharpZipLib)对文件进行压缩,返回字节数组 public static byte[] Compression(s...原创 2018-10-09 14:04:57 · 1432 阅读 · 0 评论 -
"The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value
将datetime2数据类型转换为datetime数据类型会导致超出范围的值。声明已经终止。在使用EF插入数据是发生列转换的错误,搞了好久,不知道问题出在哪里!根据提示的错误信息来看是Datetime数据类型出现错误后来发现 public Nullable&lt;System.DateTime&gt; NextCMDateTime { get; set; } public System....原创 2018-10-25 15:48:44 · 3132 阅读 · 0 评论 -
Thread 中 Susend()和Resume过时的解决办法
在C#中对线程进行暂停时 发现Suspend()和Resume()过时,找了最后发现这样可以比较简单的解决这个问题 private static bool State = true; static AutoResetEvent ResetThr = new AutoResetEvent(false); //后台线程执行的方法 public static void Add...原创 2018-10-23 11:14:48 · 2820 阅读 · 0 评论 -
C#中进制互转:
使用 // 将指定基数的数字的字符串表示形式转换为等效的 64 位有符号整数。 // // 参数: // value: // 一个包含数字的字符串。 // // fromBase: /...原创 2018-11-16 17:10:02 · 257 阅读 · 0 评论 -
打印Winform界面
得到Panel面板中的图像调用下面的函数 [System.Runtime.InteropServices.DllImport("gdi32.dll")] public static extern long BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, ...原创 2018-11-23 09:30:59 · 633 阅读 · 0 评论 -
后台线程调用界面线程显示
使用委托调用的三个步骤:1.定义一个与指定方法的格式相匹配的委托2.创建自定义委托实例,将方法名作为构造函数的参数3.通过调用调用委托对象的Invoke()间接调用该方法可以通过使用内置委托action&lt;&gt; Fun&lt;&gt;委托Action指向无返回值得方法Fun指向有返回值的方法后台线程调用主线程控件的方法1.//声明委托private delegate b...原创 2018-11-20 11:24:37 · 339 阅读 · 0 评论 -
Winform清空容器中所有控件中的值
在Winfrom开发中,在用户提交数据后,有时需要清空界面的值可以使用下面的函数进行清空 /// <summary> /// 清除容器里面某些控件的值 /// </summary> /// <param name="parContainer">容器名称</param> ...原创 2018-11-30 08:50:09 · 3028 阅读 · 1 评论 -
Winform中窗体切换
/// <summary> /// 打开窗体 /// </summary> /// <param name="form"></param> /// <param name="panelParent"></param> p原创 2018-11-26 23:43:04 · 3638 阅读 · 0 评论 -
关于WCF
从.NET 3.0 开始引入了一种专门用来构建分布式系统的API----WCF分布式系统:在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。系统中存在一个以全局的方式管理计算机资源的分布式操作系统。通常,对用户来说,分布式系统只有一个模型或范型。在操作系...原创 2018-10-11 16:38:18 · 103 阅读 · 0 评论