WinForm窗体调用WCF服务窗体卡死问题
窗体启动会启动一个程序主线程,如果在From_Load()方法中调用服务,调用服务操作会阻塞主程序。
只需要将调用服务的操作放到其他线程中处理就可以解决这个问题。
Thread ServiceThread=null;
public void TestForm_Load(object sender, EventArgs e)
{
CheckForIllegalCrossThreadCalls = false;
ServiceThread = new Thread(new ThreadStart(RegService));
ServiceThread.Start();
}
private void RegService()
{
//这里实现注册服务调用服务操作
}
注意:开启了线程要记得关闭,不然当关闭该窗体时其主进程关不掉,因为还有线程存在。可以在FromClosed()方法里将该线程关闭。
代码如下:
private void TestForm_FormClosed(object sender, FormClosedEventArgs e)
{
ServiceThread.Abort();
Application.Exit();
}
相关推荐
-
C#实现Winform版计算器
本文实例为大家分享Winform版计算器的具体实现方法,供大家参考,具体内容如下 前台页面设计 后台代码实现 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace 计
-
C# 一个WCF简单实例
WCF实例(带步骤) 复制代码 代码如下: <xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" /> 本篇转自百度文档,自己试过,确实可以用. 以订票为例简单应用wcf 新建一个wcf服务应用程序 在IService1.cs定义服务契约 复制代码 代码如下: namespace WcfDemo { // 注意: 如果更改此处的接口名称 "IService
-
C# WCF简单入门图文教程(VS2010版)
在这个例子中我们将使用VS2010创建一个WCF服务,其中会了解[DataContract][ServiceContract]等特性. 内置的WCFSVCHost,并使用"WCF测试客户端"来测试我们创建的服务. 注意下面的所有类.接口及方法都添加了public的访问级别. 一.建立一个WCF服务库 创建一个WCF服务库项目 在解决方案中会自动为我们生成两个类文件"IService1.cs"和"Service1.cs". 这两个类文件是两个WCF
-
C#计算器编写代码
利用C#编写一个计算器.如下图,能够完成基本的四则运算. 当然这个程序甚至还不上Windows附件那个自带的多功能计算器. 不过这个程序的逻辑还是非常值得思考的,首先你要考虑好用户按+ - * / =等运算符号.数字键之后计算器的状态记录问题. 然后要防止多次按某一个键的问题.比如小数点.就不应该让用户在输入一个数的时候键入两次. 最后,还要弄两个数组,一个存放用户在输入的数字,另一个存放用户输入的符号. 制作过程如下, 1.布局如下,同时可以参考<简单实现C#窗体程序判断是否闰年 >
-
C#编写的windows计算器的实例代码
复制代码 代码如下: using System; using System.Drawing; using System.Windows; using System.Windows.Forms; using System.Collections; using System.ComponentModel; using System.Data; namespace comput { /// <summary> /// 这是一个计算器的简单实现. /// </summar
-
c#入门之实现简易存款利息计算器示例
本想把练习题做了的结果放上来,不过发现附录是有答案的,就算了吧,自己做了没问题就行了哈.之前提到过,要是有朋友有想法,需要做小工具我可以帮忙实现,不过貌似大家都很忙.SO,自己学完第4章后,决定做一个工具:简易存款利息计算器,可以更好地复习前面学过的知识. 原理介绍为啥叫简易呢,因为现在只能计算整存整取(只有1.2.3.5四种年限哈)的利息,并且没有启用自动转存(俗称利滚利,就是把本年和上年的利息之和,作为下年利息计算时的本金)功能,方便和网上已有的工具对比计算结果,判断自己的程序算出来正不正确
-
总结C#动态调用WCF接口的两种方法
如何使用 1.第一种方式比较简单,而且也是大家喜欢的,因为不需要任何配置文件就可解决,只需知道服务契约接口和服务地址就可以调用. 2.使用Invoke的方式,但是需要在调用客户端配置WCF,配置后在Invoke类里封装服务契约接口即可. 客户端调用DEMO //第一种方式 string url = "http://localhost:3000/DoubleService.svc"; IDoubleService proxy = WcfInvokeFactory.CreateServic
-
C#日历样式的下拉式计算器实例讲解
本文介绍了如何在Visual Studio中创建用户控件来显示下拉式计算器,弹出效果类似于日历控件. 介绍 如果我们正在做一个类似于库存控制和计费系统的项目,有些部分可能必须手动计算数值.因此,用户就不得不使用计算器得到结果,再填入到输入字段中,或者在工作窗口上单独打开一个计算器窗口.总之,各种不便和麻烦. 这篇文章主要描述的是如何添加下拉式计算器到DataGridView单元格中,如下图: 使用代码 第一步,我们必须先创建一个函数计算器,并且能够使用控件.因此,不妨先创建一个Visual St
-
WCF实现的计算器功能实例
本文实例讲述了WCF实现的计算器功能.分享给大家供大家参考,具体如下: 对于WCF,我们有了前面的理论基础,今天通过一个计算器的实例主要给大家讲解怎么一步一步地创建一个完整的WCF应用. 一.创建整个解决方案 Calculator.Service:一个类库项目,定义服务契约(Service Contract),应用System.ServiceModel程序集:提供对WCF服务的实现. Calculator.Host:一个Windows窗体应用程序,实现对定义在Calculator.Service
-
WCF配置心得
根据蒋金楠老师的博文所说的, WCF的终结点有三个要素组成,分别是地址(Address).绑定(Binding)和契约(Contract),简记可写成Endpoint = ABC. 地址:地址决定了服务的位置,解决了服务寻址的问题. 绑定:绑定实现了通信的所有细节,包括网络传输.消息编码,以及其他为实现某种功能对消息进行的相应处理.绑定的类型包括BasicHttpBinding.WsHttpBinding.NetTcpBinding等. 契约:契约是对服务操作的抽象,也是对消息交换模式以及消息结
随机推荐
- UserAccessList 集合的功能(VBA)
- jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
- java 中自定义OutputFormat的实例详解
- CentOS 7 网络配置详解
- JavaScript实现模仿桌面窗口的方法
- 高性能JavaScript 重排与重绘(2)
- 在ASP.NET Core 中发送邮件的实现方法(必看篇)
- AspNetPager与Socut.Data使用方法
- PHP动态创建Web站点的方法
- Python中SOAP项目的介绍及其在web开发中的应用
- linux下备份MYSQL数据库的方法
- 浅谈JavaScript for循环 闭包
- Node.js通过身份证号验证年龄、出生日期与性别方法示例
- jQuery插件的写法分享
- JavaScript+canvas实现七色板效果实例
- JavaScript 中 apply 、call 的详解
- 纯js实现隔行变色效果
- 深入理解 webpack 文件打包机制(小结)
- c# 插入数据效率测试(mongodb)
- 一篇文章彻底搞懂面试中常被问的各种“锁”