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#日历样式的下拉式计算器实例讲解
本文介绍了如何在Visual Studio中创建用户控件来显示下拉式计算器,弹出效果类似于日历控件. 介绍 如果我们正在做一个类似于库存控制和计费系统的项目,有些部分可能必须手动计算数值.因此,用户就不得不使用计算器得到结果,再填入到输入字段中,或者在工作窗口上单独打开一个计算器窗口.总之,各种不便和麻烦. 这篇文章主要描述的是如何添加下拉式计算器到DataGridView单元格中,如下图: 使用代码 第一步,我们必须先创建一个函数计算器,并且能够使用控件.因此,不妨先创建一个Visual St
-
WCF配置心得
根据蒋金楠老师的博文所说的, WCF的终结点有三个要素组成,分别是地址(Address).绑定(Binding)和契约(Contract),简记可写成Endpoint = ABC. 地址:地址决定了服务的位置,解决了服务寻址的问题. 绑定:绑定实现了通信的所有细节,包括网络传输.消息编码,以及其他为实现某种功能对消息进行的相应处理.绑定的类型包括BasicHttpBinding.WsHttpBinding.NetTcpBinding等. 契约:契约是对服务操作的抽象,也是对消息交换模式以及消息结
-
C# WCF简单入门图文教程(VS2010版)
在这个例子中我们将使用VS2010创建一个WCF服务,其中会了解[DataContract][ServiceContract]等特性. 内置的WCFSVCHost,并使用"WCF测试客户端"来测试我们创建的服务. 注意下面的所有类.接口及方法都添加了public的访问级别. 一.建立一个WCF服务库 创建一个WCF服务库项目 在解决方案中会自动为我们生成两个类文件"IService1.cs"和"Service1.cs". 这两个类文件是两个WCF
-
C#计算器编写代码
利用C#编写一个计算器.如下图,能够完成基本的四则运算. 当然这个程序甚至还不上Windows附件那个自带的多功能计算器. 不过这个程序的逻辑还是非常值得思考的,首先你要考虑好用户按+ - * / =等运算符号.数字键之后计算器的状态记录问题. 然后要防止多次按某一个键的问题.比如小数点.就不应该让用户在输入一个数的时候键入两次. 最后,还要弄两个数组,一个存放用户在输入的数字,另一个存放用户输入的符号. 制作过程如下, 1.布局如下,同时可以参考<简单实现C#窗体程序判断是否闰年 >
-
总结C#动态调用WCF接口的两种方法
如何使用 1.第一种方式比较简单,而且也是大家喜欢的,因为不需要任何配置文件就可解决,只需知道服务契约接口和服务地址就可以调用. 2.使用Invoke的方式,但是需要在调用客户端配置WCF,配置后在Invoke类里封装服务契约接口即可. 客户端调用DEMO //第一种方式 string url = "http://localhost:3000/DoubleService.svc"; IDoubleService proxy = WcfInvokeFactory.CreateServic
-
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#入门之实现简易存款利息计算器示例
本想把练习题做了的结果放上来,不过发现附录是有答案的,就算了吧,自己做了没问题就行了哈.之前提到过,要是有朋友有想法,需要做小工具我可以帮忙实现,不过貌似大家都很忙.SO,自己学完第4章后,决定做一个工具:简易存款利息计算器,可以更好地复习前面学过的知识. 原理介绍为啥叫简易呢,因为现在只能计算整存整取(只有1.2.3.5四种年限哈)的利息,并且没有启用自动转存(俗称利滚利,就是把本年和上年的利息之和,作为下年利息计算时的本金)功能,方便和网上已有的工具对比计算结果,判断自己的程序算出来正不正确
-
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
-
WCF实现的计算器功能实例
本文实例讲述了WCF实现的计算器功能.分享给大家供大家参考,具体如下: 对于WCF,我们有了前面的理论基础,今天通过一个计算器的实例主要给大家讲解怎么一步一步地创建一个完整的WCF应用. 一.创建整个解决方案 Calculator.Service:一个类库项目,定义服务契约(Service Contract),应用System.ServiceModel程序集:提供对WCF服务的实现. Calculator.Host:一个Windows窗体应用程序,实现对定义在Calculator.Service
-
C# 一个WCF简单实例
WCF实例(带步骤) 复制代码 代码如下: <xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" /> 本篇转自百度文档,自己试过,确实可以用. 以订票为例简单应用wcf 新建一个wcf服务应用程序 在IService1.cs定义服务契约 复制代码 代码如下: namespace WcfDemo { // 注意: 如果更改此处的接口名称 "IService
随机推荐
- 详解删除SQL Server 2005 Compact Edition数据库
- Hibernate 修改数据的实例详解
- DIV+CSS网页制作布局技巧学习
- MySQL数据库事务隔离级别介绍(Transaction Isolation Level)
- 浏览器中的正则表达式陷阱说明
- DOS的启动过程详解分析
- Android自定义PopupWindow小案例
- 深入解析Session是否必须依赖Cookie
- 基于jquery的Repeater实现代码
- Flex DataGrid DataGridColumn数据颜色多样化-类型替换
- javascript读写json示例
- 收藏大量的瑞星2006序列号!!!
- java 中 request.getSession(true、false、null)的区别
- bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
- Android中获取电池电量实例代码
- Android自定义ViewPager实例
- Android编程之方向传感器用法示例
- Android ADT和SDK Manager无法更新下载解决方案
- Species Tree 利用HashTable实现实例代码
- c#操作xml帮助类分享(xml增删改查)