WPF使用自定义Main函数
2021-05-15 16:27
1456 查看
一、自定义Main函数
在WPF中,我们添加一个Program静态类,添加一个Main静态方法,需要注意的是该方法需要添加“STAThread”,表示WPF程序需运行在单一线程单元下。具体如下:
static class Program { [STAThread] static void Main() { Console.WriteLine("自定义Main函数"); new MainWindow().ShowDialog(); } }
上述的Main并没有调用App类,若需要使用App类,那么自定义Main函数内容如下:
static void Main() { Console.WriteLine("自定义Main函数"); new MainWindow().Show(); new App().Run(); }
二、编译自定义Main函数
此时,编译代码,报错“程序定义了多个入口点。使用/main(指定包含入口点的类型)进行编译”。此时,我们需要更改应用程序的启动对象为我们自定义的对象,具体如下:
再次编译即可完成。
三、程序原先的Main在哪
在以上示例中,我们比较好奇程序原先的Main函数在哪?在代码完全没有搜索到,我们使用ildasm.exe查看IL代码查看,发现App类确实有Main函数。具体如下:
打开Main方法查看代码,我们发现该代码是程序编译时生成的,具体如下:
.method public hidebysig static void Main() cil managed { .entrypoint .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [System]System.CodeDom.Compiler.GeneratedCodeAttribute::.ctor(string, string) = ( 01 00 16 50 72 65 73 65 6E 74 61 74 69 6F 6E 42 // ...PresentationB 75 69 6C 64 54 61 73 6B 73 07 34 2E 30 2E 30 2E // uildTasks.4.0.0. 30 00 00 ) // 0.. // 代码大小 22 (0x16) .maxstack 1 .locals init ([0] class chapter01.App app) IL_0000: nop IL_0001: newobj instance void chapter01.App::.ctor() IL_0 56c 006: stloc.0 IL_0007: ldloc.0 IL_0008: callvirt instance void chapter01.App::InitializeComponent() IL_000d: nop IL_000e: ldloc.0 IL_000f: callvirt instance int32 [PresentationFramework]System.Windows.Application::Run() IL_0014: pop IL_0015: ret } // end of method App::Main
我们打开程序obj/Debug下面的App.g.cs,可以找到Main函数,具体如下:
相关文章推荐
- 【WPF】ContentControl Style定义与使用出现问题后 -- 引发的思考
- Hosting a Win32 Control in WPF 在wpf中使用win32 控件
- 『WPF』使用 [Annotation] 注释来定制数据/实体类
- WPF中的DataTemplate绑定使用的场合
- WPF使用第三方的字体(TTF文件)
- WPF中使用MediaElement显示GIF
- WPF中使用文件浏览对话框的几种方式
- WPF中WebBrowser的使用方法及分析
- WPF使用其他dll里的样式
- WPF使用X:Static做多语言支持
- WPF 使用winform控件
- WPF 使用动画设置特殊值的方法
- WPF实现选项卡效果(1)——使用AvalonDock
- WPF使用---数据读取显示GridView
- 【WPF】使用 XAML 的 Trigger 系统实现三态按钮
- WPF的ComboBox数据绑定,使用Dictionary作为数据源
- 解决在WinForm 或 WPF中使用WebBrowser来显示本地包含javascript的网页时弹出黄色警告的问题。
- WPF中两种不同的视频流的使用
- WPF 使用Microsoft.Ink 做的墨迹输入法
- wpf使用多线程来显示进度条