您的位置:首页 > 编程语言 > C#

c# 问题杂记

2010-04-20 22:46 211 查看
最近在使用c#时,遇到些问题,记录下来以后查看

1.workthread没有消息传递机制,所有在workthread中不能new form等需要消息循环的窗口。

2.写程序时遇到:在创建窗口句柄之前,不能在控件上调用 Invoke或begininvoke,查看代码是,new 了一个form,然后调用一线程,在线程中通过form.invoke来调用form控件,应该是没问题的,因为已经new form了,感觉应该有窗口句柄了,但是却报了以上错误。经查资料以及网上搜索,发现:new form后,窗口句柄并没有生成,只是在内存中有个form对象,只有当窗口真正显示出来时,窗口句柄才生成。所以,当new form后,还需form.show()之后,才真正生成窗口句柄。

3.form窗口消息传递:wndproc(窗口处理函数)-》onclick(引发click事件)——》form_click()事件。其中wndproc和on***都可以重载。

4.常用delegate代码:

Thread thread1 = new Thread(new ThreadStart(delegate()
{

}));

controls.BeginInvoke(new MethodInvoker(delegate()
{

}));

5.调用delegate:

(1) public delegate void Method();

void f()

{

}

controls.BeginInvoke(new Method(f));

(2)public delegate void Method();

void f()

{

}

Method m1=new Method(f)/f;

controls.BeginInvoke(m1);

(3)

controls.BeginInvoke(new MethodInvoker(delegate()
{

}));

6.File.Create创建一个文件之后,然后用StreamReader来读取,说另一个进程正在使用该文件:Create方法调用后会返回一个打开的FileStream,关闭掉就可以了
if(!file1.Exists)
{

file1.Create().Close();
}或者

FileStream fs=File.Create(FilePath);

fs.Close();//这里没有关闭filestream;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: