当前位置: 首页 > news >正文

做展示空间设计的网站/网络营销常用的工具和方法

做展示空间设计的网站,网络营销常用的工具和方法,少儿编程网,石河子网站制作这几天在做一个把大量Infopath生成的XML数据,进行处理的程序,我用了MDI子窗体,每个窗体包含了各自的功能,如,遍历目录及其子目录检查文件类型并自动生成Sql语句并入库、对Infopath数据的自动检查、对数据中的某些域的替…
这几天在做一个把大量Infopath生成的XML数据,进行处理的程序,我用了MDI子窗体,每个窗体包含了各自的功能,如,遍历目录及其子目录检查文件类型并自动生成Sql语句并入库、对Infopath数据的自动检查、对数据中的某些域的替换及更改处理、对数据文件的合并、拆分、剔除记录、统计数据、对数据自动导入数据库。。。等等。
当我打开一个子窗体,进行某项操作时,如果字窗体中有循环操作时。如果运行中我关闭子窗体,发现窗体虽然关闭了,但子窗体中的循环程序却没有退出,一直在执行,并占用着系统资源,直到循环结束,才真正的释放资源。尽管我在字窗体的Closed事件中写了如下代码:

private void frmFileDisposal_Closed(object sender, System.EventArgs e)
{
this.Dispose();
this.Close();
}
后来从查MSDN和从网上查资料才得知,Dispose()方法,虽然能释放当前窗体的资源,却不能强制结束循环,
要想强制突出当前程序要用:System.Environment.Exit(int exitcode)方法;该方法:终止当前进程并为基础操作系统提供指定的退出代码。

如下则问题解决:
private void frmFileDisposal_Closed(object sender, System.EventArgs e)
{
System.Environment.Exit(System.Environment.ExitCode);
this.Dispose();
this.Close();
}

或者把它放到事件里:
while (MessageBox.Show("退出当前窗体?", "", MessageBoxButtons.YesNo) == DialogResult.No)
{
for(int j=1; j<=i; j++)
{
listBox1.Items.Add(j);
}
}
System.Environment.Exit(System.Environment.ExitCode);

还有一种方法: System.Threading.Thread.CurrentThread.Abort();
或者 Process.GetCurrentProcess().Kill()
或者 Application.ExitThread();
或者 Application.ExitThread()

不过以上方法,都是强制直接退出了整个程序,不只是关闭子窗体。可能还会引发某些问题,
我感觉最好方法的就是,在子窗体的Closing事件中,写循环退出条件,这样就可以避免某些未知的错误,而且可以只关闭子窗体,并释放子窗体占用的资源

Application.Exit(); 方法停止在所有线程上运行的所有消息循环,并关闭应用程序的所有窗口

Application.Exit 是一种强行退出方式,就像 Win32 的 PostQuitMessage()。它意味着放弃所有消息泵,展开调用堆栈,并将执行返回给系统。


在 Windows(Win32 或 .NET)中关闭应用程序的正确方式是关闭它的主应用程序窗口(例如 Form.Close)。主消息泵结束后依然存在的任何窗口都需要手动关闭。在应用程序退出之前通过调用 Form.Close 或 Form.Dispose 来关闭窗口是清除窗口的良好做法,但这需要您有意识地去做。我们需要记住,.NET Framework 的 OnClosing() 是 Win32 的托管版本的 WM_CLOSE,而非 WM_DESTROY。

另外,如果您使用 form.Close(),通过处理 OnClosing 或 OnClosed 事件,就可以让您的应用程序清理内容、关闭文件等。如果您通过 Application.Exit 强行退出应用程序,就无法调用这些事件。

如何退出C#多线成winform程序

这是项目中碰到的问题。

在网上查了下,网上提供的解决方法 :

      1,将主线程设置为后台进程。方法是将主线程的isBackground = true。据说,这样在关闭主程序时后关闭主线程,并关闭所有的线程。

      但是我这样做没有成功。

      2,有人列出了c#程序退出的几种方法:

            (1)Application.Exit()//好像只在主线程可以起作用,而且当有线程,或者是阻塞方法的情况下,很容易失灵。

             (2) System.Environment.Exit(0) //无论在主线程或其它线程,都可以吧程序结束干净

     (3)Application.ExitThread();

但是我发现(2)这个方法在.netFrame Work compact下是没有的我这样

最后我的解决办法是:强制退出程序进程。代码如下:

System.Diagnostics.Process tt = System.Diagnostics.Process.GetProcessById(System.Diagnostics.Process.GetCurrentProcess().Id);
               
tt.Kill();

当然,这种方法很暴力。良好的程序设计应该是,所有的线程都有条件可以结束循环以退出(包括timer)。在程序退出时触发所有线程的终止条件。


http://www.jmfq.cn/news/5090455.html

相关文章:

  • wap网站前台/广州网络营销运营
  • 衡阳做网站的公司/推广软文发布平台
  • 南京建设网页速成班/佛山百度快速排名优化
  • 郑州网站排名外包/文军seo
  • 网站qq代码/西安网站设计
  • 铜川哪些公司需要网页电商设计师/农大南路网络营销推广优化
  • 越南做It网站推广/站长查询域名
  • 网站页面设计流程/中国疾控卫生应急服装
  • 怎么做网站的在线客服/重庆seo排名
  • 企业网站推广方案范例/合肥网站设计
  • aspx网站做app/网络推广app是违法的吗
  • 贵州省住房和城乡建设厅网站首页/软件注册推广平台
  • php 网站目录结构/宣传软文
  • 网站建设需要的技术设备/辽宁和生活app下载安装
  • 小程序快速建站/技术培训班
  • dw做网站需要数据库么/网站制作建设公司
  • 销售网站制作电话/微信推广费用一般多少
  • 高端网站设计公司如何设计网站/加强服务保障 满足群众急需需求
  • 网站源码出售/网站关键词优化建议
  • 做网站首页的图片怎么缩小/深圳市网络seo推广平台
  • 北京手机网站建设外包/百度一下知道官网
  • html5 公司网站/品牌网站设计
  • 建设工程鲁班奖公示网站/app推广文案
  • 设计网站中如何设置特效/网推软件有哪些
  • 高端网站开发教程/谷歌收录查询工具
  • 北京网站制作费用/湖南seo网站开发
  • wordpress标题间隔符修改/seo课程在哪培训好
  • 青岛的网站建设/互联网营销是什么
  • 成都个人网站建设/近两年网络营销成功案例
  • 公安网站的建设目的/南昌seo代理商