初学.net 在csdn下载频道down了一份代码 写一个通讯录做大作业
今天碰到.net MDA的问题
错误提示如下
检测到 LoaderLock
Message: 正试图在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。在网上找了一些解决方法 都是把.net的MDA给屏蔽掉
个人觉得这种做法不好 把隐患藏起来了 所以发帖请教下高手 我的代码问题出在哪了 Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); //运行登录对话框
Forms.fmLogin login = new Forms.fmLogin(); login.ShowDialog();
//Console.WriteLine(login.DialogResult.ToString());
这个是主程序的代码 创建了一个login Form,然后显示为对话框 对话框退出后 程序直接退出了在对话框中,退出的代码如下,是cancelButton的事件处理函数private void cancelButton_Click(object sender, EventArgs e)
{
//设置当前登录对话框的返回值
this.DialogResult = DialogResult.Cancel;
//关闭当前对话框
this.Close();
}不知道程序的错误出在哪里,恳请高手指导.
今天碰到.net MDA的问题
错误提示如下
检测到 LoaderLock
Message: 正试图在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。在网上找了一些解决方法 都是把.net的MDA给屏蔽掉
个人觉得这种做法不好 把隐患藏起来了 所以发帖请教下高手 我的代码问题出在哪了 Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); //运行登录对话框
Forms.fmLogin login = new Forms.fmLogin(); login.ShowDialog();
//Console.WriteLine(login.DialogResult.ToString());
这个是主程序的代码 创建了一个login Form,然后显示为对话框 对话框退出后 程序直接退出了在对话框中,退出的代码如下,是cancelButton的事件处理函数private void cancelButton_Click(object sender, EventArgs e)
{
//设置当前登录对话框的返回值
this.DialogResult = DialogResult.Cancel;
//关闭当前对话框
this.Close();
}不知道程序的错误出在哪里,恳请高手指导.
解决方案 »
- 探讨一下事件和委托内部实现机制??
- 我想得到image下file的值panopic/1500.jpg怎么办?
- 前台的页面里怎么显示后台的变量?
- 如何在Excel中插入一个矢量图片
- 刚开始转入c# 请高手们多多指教一下,一个简单的问题,结构型变量输出?
- 如何将datagridview的数据导出到指定的excel里面的一个sheet里,就是在指定的excel文件里添加一个sheet来存放导出的数据
- 好吧,菜鸟再提问,请教字符串替换方法。
- 基于c/s的考试系统怎样实现自动计时功能啊?
- 实在头痛的问题﹐怎幺对listview进行模糊快速定位查找﹐并高亮度显示。。
- 在asp.net,c#中怎样调用使用VB写的COM
- C#网页提示"非法访问"
- c#焦点问题
http://www.cnblogs.com/winzheng/archive/2008/12/05/1348575.html
{
Application.Exit();
}
如果点击对话框取消整个程序结束就是上面这样写,我不知道你到底要什么样的,还有就是你的
this.DialogResult = DialogResult.Cancel;
这东西不要写在你这个取消息事件里面
如果要用这个值可以写到你的fmLogin窗体加载事件里面:
确定按钮.DialogResult = DialogResult.OK;
取消按钮.DialogResult = DialogResult.Cancel;然后在:
Forms.fmLogin login = new Forms.fmLogin();、
login.ShowDialog();
if(login.DialogResult ==DialogResult.OK)
{
//点击确定按钮执行的内容}
图看不到
地址http://www.cnblogs.com/Cajon/archive/2007/08/15/Be_Careful_Of_MDA.html
感谢你们发的连接 进去看了 上面说换肤控件有可能导致这个问题 我把换肤控件注释掉以后
问题解决了 不过换肤控件是我这个东西的亮点把 个人比较看重 所以考虑看看改代码结构
解决换肤控件引发的MDA异常回2楼:
呵呵 ,你的办法我在最开始就试了,当时也觉得可能调用窗口的close()方法只是退出窗口,没有退出
消息循环,所以用你的方法,结果还是一样的,还是很谢谢你回3楼:
你和4楼的回复最详细,呵呵,你的意思我明白了
我的这个程序的想法是,启动后,先new一个login对话框,用来执行注册新用户和登录验证,
对话框退出以后,则对结果进行判断,如果是DialogResult.Yes,则用户选择了登录,直接
Application.Run(new mainForm()),进入主界面,
如果结果是DialogResult.Cancel,则用户选择了退出,直接退出程序.回4楼:
感谢4楼,谢谢你的分享,这时今天最大的收获了,尤其是那句"因为很多MDA异常的触发都是在GC回收时进行的,因此表现比较随机。较难重现。",感觉又进步一些了.今天晚上花点时间,好好了解下MDA,呵呵.