C# Tips

 

查看别人的源程序时,一些错误的解决提示:

1、win7 64位系统: 运行失败的话,将VS菜单栏下面那栏里有个"Any CPU",进去new一个x86的试试

2、无法加载dll文件: 方法一.在解决方案资源管理器里将这个dll添加到项目的引用里;

          方法二.如果添加引用失败,可以尝试在开始->运行->cmd里 先进入"C:\Windows\System32\"文件夹,然后运行"regsvr32.exe d:\xxx.dll"命令,注册这个dll文件,再尝试方法一;

          方法三.注册也失败的话,可尝试直接将dll文件复制到"项目目录\bin\Debug\"下,如果之前CPU设置了x86的话那就是"项目目录\bin\x86\Debug\"下。

 

模拟鼠标点击的方法: Button1_Click(this, new EventArgs());

 

添加线程池: ThreadPool.QueueUserWorkItem(new WaitCallback((stateInfo) =>
                {
                      doSomething();
                }));

 

struct 类型里的字段默认值: int类型默认值为0、string类型默认值为null

 

[STAThread]的含义

[STAThread]
STAThread:Single Thread Apartment Thread (单一线程单元线程)
[] 是用来表示Attributes;

[STAThread]
是一种线程模型,用在程序的入口方法上(在C#和VB.NET里是Main()方法),来指定当前线程的ApartmentState 是STA。用在其他方法上不产生影响。在aspx页面上可以使用AspCompat = "true" 来达到同样的效果。这个属性只在 Com Interop 有用,如果全部是 managed code 则无用。简单的说法:[STAThread]指示应用程序的默认线程模型是单线程单元 (STA)。启动线程模型可设置为单线程单元或多线程单元。如果未对其进行设置,则该线程不被初始化。也就是说如果你用的.NET Framework,并且没有使用COM Interop,一般不需要这个Attribute。其它的还有MTA(多线程套间)、Free Thread(自由线程)。

[STAThread] attribute指示应用程序的 COM 线程模型是单线程单元。
而于此对应的多线程单元则是 [MTAThread](多线程单元线程)

COM 线程模型只适用于使用 COM interop 的应用程序。如果将此属性应用到不使用 COM interop 的应用程序,将没有任何效果。

COM 线程模型可设置为单线程单元或多线程单元。如果应用程序线程实际调用了 COM 组件,则仅为 COM interop 初始化该线程。如果没有使用 COM interop,则不初始化该线程。

 

 

posted @ 2011-09-01 17:10  Wiliz  阅读(546)  评论(0)    收藏  举报