php无法访问winform的wcf,WinForm窗体调用WCF服务窗体卡死问题

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();

}

时间: 2012-12-28

根据蒋金楠老师的博文所说的, WCF的终结点有三个要素组成,分别是地址(Address).绑定(Binding)和契约(Contract),简记可写成Endpoint = ABC. 地址:地址决定了服务的位置,解决了服务寻址的问题. 绑定:绑定实现了通信的所有细节,包括网络传输.消息编码,以及其他为实现某种功能对消息进行的相应处理.绑定的类型包括BasicHttpBinding.WsHttpBinding.NetTcpBinding等. 契约:契约是对服务操作的抽象,也是对消息交换模式以及消息结

6b5aa0751a6f1e6a9d0b665a02cc1f46.gif

在这个例子中我们将使用VS2010创建一个WCF服务,其中会了解[DataContract][ServiceContract]等特性. 内置的WCFSVCHost,并使用"WCF测试客户端"来测试我们创建的服务. 注意下面的所有类.接口及方法都添加了public的访问级别. 一.建立一个WCF服务库 创建一个WCF服务库项目 在解决方案中会自动为我们生成两个类文件"IService1.cs"和"Service1.cs". 这两个类文件是两个WCF

6b5aa0751a6f1e6a9d0b665a02cc1f46.gif

WCF实例(带步骤) 复制代码 代码如下: 本篇转自百度文档,自己试过,确实可以用. 以订票为例简单应用wcf 新建一个wcf服务应用程序 在IService1.cs定义服务契约 复制代码 代码如下: namespace WcfDemo { // 注意: 如果更改此处的接口名称 "IService

6b5aa0751a6f1e6a9d0b665a02cc1f46.gif

本文实例讲述了WCF实现的计算器功能.分享给大家供大家参考,具体如下: 对于WCF,我们有了前面的理论基础,今天通过一个计算器的实例主要给大家讲解怎么一步一步地创建一个完整的WCF应用. 一.创建整个解决方案 Calculator.Service:一个类库项目,定义服务契约(Service Contract),应用System.ServiceModel程序集:提供对WCF服务的实现. Calculator.Host:一个Windows窗体应用程序,实现对定义在Calculator.Service

6b5aa0751a6f1e6a9d0b665a02cc1f46.gif

本文介绍了如何在Visual Studio中创建用户控件来显示下拉式计算器,弹出效果类似于日历控件. 介绍 如果我们正在做一个类似于库存控制和计费系统的项目,有些部分可能必须手动计算数值.因此,用户就不得不使用计算器得到结果,再填入到输入字段中,或者在工作窗口上单独打开一个计算器窗口.总之,各种不便和麻烦. 这篇文章主要描述的是如何添加下拉式计算器到DataGridView单元格中,如下图: 使用代码 第一步,我们必须先创建一个函数计算器,并且能够使用控件.因此,不妨先创建一个Visual St

复制代码 代码如下: using System; using System.Drawing; using System.Windows; using System.Windows.Forms; using System.Collections; using System.ComponentModel; using System.Data; namespace comput {     ///     /// 这是一个计算器的简单实现.     ///

6b5aa0751a6f1e6a9d0b665a02cc1f46.gif

利用C#编写一个计算器.如下图,能够完成基本的四则运算. 当然这个程序甚至还不上Windows附件那个自带的多功能计算器.  不过这个程序的逻辑还是非常值得思考的,首先你要考虑好用户按+ - * / =等运算符号.数字键之后计算器的状态记录问题.  然后要防止多次按某一个键的问题.比如小数点.就不应该让用户在输入一个数的时候键入两次.  最后,还要弄两个数组,一个存放用户在输入的数字,另一个存放用户输入的符号.  制作过程如下,  1.布局如下,同时可以参考

6b5aa0751a6f1e6a9d0b665a02cc1f46.gif

本文实例为大家分享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 计

如何使用 1.第一种方式比较简单,而且也是大家喜欢的,因为不需要任何配置文件就可解决,只需知道服务契约接口和服务地址就可以调用. 2.使用Invoke的方式,但是需要在调用客户端配置WCF,配置后在Invoke类里封装服务契约接口即可. 客户端调用DEMO //第一种方式 string url = "http://localhost:3000/DoubleService.svc"; IDoubleService proxy = WcfInvokeFactory.CreateServic

本想把练习题做了的结果放上来,不过发现附录是有答案的,就算了吧,自己做了没问题就行了哈.之前提到过,要是有朋友有想法,需要做小工具我可以帮忙实现,不过貌似大家都很忙.SO,自己学完第4章后,决定做一个工具:简易存款利息计算器,可以更好地复习前面学过的知识. 原理介绍为啥叫简易呢,因为现在只能计算整存整取(只有1.2.3.5四种年限哈)的利息,并且没有启用自动转存(俗称利滚利,就是把本年和上年的利息之和,作为下年利息计算时的本金)功能,方便和网上已有的工具对比计算结果,判断自己的程序算出来正不正确

临近年关,今日在学习的过程中感觉甚是无聊,便想用C#来开发一个简易的计算器程序,这里记录下今日下午的实现过程,同时也记录下自己的第一遍博客. 一.需求 首先我们先来决定我们的计算器要实现什么功能 功能需求:1.能够实现加.减.乘.除.求余等两个操作数的运算,以及开方.平方单个操作数的运算 2.能够清除错误的输入,能够实现清零操作 显示需求:能够显示操作数与运算内容,显示结果 二.设计界面 1.在明白我们的功能需求后,我们来设计界面,界面主要包括三个部分,用于显示的两个textBox,以及数字键B

本文介绍了p5.js入门教程之鼠标交互的示例,分享给大家,具体如下: 一.鼠标交互常用关键词 p5.js提供了许多鼠标操作用的关键词与函数,常用的有: mouseIsPressed:关键词,若鼠标按下则为true,反之为false mouseButton:关键词,用来判断鼠标按下的是哪个键 案例如下: function setup() { createCanvas(400, 400); } function draw() { background(220); if (mouseIsPressed

289df844e78a2c6364d69a255d5f7503.png

由于今天在网上搜了一下c#写的计算器,发现大多都太繁琐了,很多没必要并且不容易理解的东西就专门写了这个博客 1.首先新建一个windows窗体应用的项目.执行文件-新建-项目-windows窗体应用 2.在工具箱中拖出一个textbox用于输入和显示,再拖出21个button按钮用来当计算器的按键,在textbox下面还有一个lable控件(我把它属性改成了空格所以看不到了),改一下按钮的text属性 3.双击数字按钮进入代码界面(数字只用一个事件即可,运算符也是用一个事件,其他每个按钮都需要双

本文通过一个简易安全认证示例的开发实践,理解过滤器和拦截器的工作原理. 很多文章都将过滤器(Filter).拦截器(Interceptor)和监听器(Listener)这三者和Spring关联起来讲解,并认为过滤器(Filter).拦截器(Interceptor)和监听器(Listener)是Spring提供的应用广泛的组件功能. 但是严格来说,过滤器和监听器属于Servlet范畴的API,和Spring没什么关系. 因为过滤器继承自javax.servlet.Filter接口,监听器继承自ja

利用javascript实现简易的计算器,供大家参考,具体内容如下 1.先构思整个计算器的模式以及想要实现的功能,按模块创建相应的div,在"head"中设置其样式和布局. 2.用"input"标签创建text类型,置为输出框:依次创建buttom类型,置为按钮,内容为1.2.3--:创建"=",并在input中对他进行点击事件"οnclick="result()"". 3.添加script,利用var定义

定时器timer是多线程编程中经常设计到的工具类 定时器的原理其实很简单: 创建一个新线程 在那个线程里等待 等待指定时长后做任务 这里用C++11实现了一个简单易用的定时器,包含两种模式: 周期性定时任务执行 单次延时任务执行 timer.hpp #ifndef _TIMER_H_ #define _TIMER_H_ #include #include #include #include

本文实例为大家分享了Javascript实现简易天数计算器的具体代码,供大家参考,具体内容如下 效果图: 功能: 1. 支持选择日期: 2. 自动计算闰年: 3. 支持使用当前日期. 代码: (1)html文件:

简易天数计算器

本文实例为大家分享了PHP实现简易图形计算器的具体代码,供大家参考,具体内容如下 主函数:index.php

图形计算器

本文实例为大家分享了Android实现简易的计算器的具体代码,供大家参考,具体内容如下 布局(activity_main.xml)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值