C#
文章平均质量分 65
chrisxiaoniu
这个作者很懒,什么都没留下…
展开
-
C#中的后台线程
基本概念就不再多说,后台线程和前台线程的主要区别就是后台线程不会防止进程的终止,这句话如何理解呢?下面用个例子来理解一下。 (阅读时请注意线程和进程的区别)先来看一下开启子线程的标准流程: public partial class Form1 : Form { private volatile bool threadStopped; //多線程訪問的變量要...原创 2018-06-29 14:48:07 · 9902 阅读 · 0 评论 -
C++转C#的一些误区
1、new操作符刚开始写C#代码的时候就会发现这样一个问题,如下代码会报错: static void Main(string[] args) { int a; Console.WriteLine(a); }C++中会默认为局部变量赋初始值,C#则不会,如果我就是不想赋初始值或者感觉没有合适的初始值给它怎么...原创 2018-07-02 11:24:04 · 352 阅读 · 0 评论 -
C#连接数据库
在配置好Oracle客户端和tnsnames.ora的情况下,还是挺简单的,在应用中添加System.Data.OracleClient,然后再使用命名空间System.Data.OracleClient,连接字符串如下:using System.Data.OracleClient;string connectStr = "Data Source = DBS_MESV1;User = MESV1...原创 2018-07-09 15:54:25 · 1239 阅读 · 0 评论 -
C#中结构和类的默认构造函数
不想看我废话直接看这个链接就行:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/new-operator研究这个的起因还是C#的类的字段可以赋值初始化,而在C++中是不行的(除了const static int(枚举)这种成员变量),原因是类声明时并未分配空间,而后查了一些资料才得知这是C#编译器...原创 2018-07-05 11:24:18 · 3839 阅读 · 0 评论 -
无法将 匿名方法 转换为类型“System.Delegate”,因为它不是委托类型
看了些博客,感觉还是没说清楚,下面说说自己的理解。在多线程环境下是不允许跨线程修改主线程上窗口控件的,所以在子线程中对控件进行修改应该使用控件的Invoke方法,Invoke方法的定义是在拥有此控件的基础窗口句柄的线程上执行指定的委托。也就是说它会自动寻找创建该控件的线程(一般是主线程),然后在该线程上执行委托里的方法,这就避免了多线程同时操作同一控件,使其状态不确定。窗体本身也具有这个方法,所以...原创 2018-07-06 16:40:25 · 1909 阅读 · 0 评论