`

VC++多线程调用webservice实例

 
阅读更多
一、开始多线程
1.开始创建多线程(变量HThread和ThreadID全局函数)
void CSleepAnalysisServiceDlg::OnBnClickedStartanalisis()
{

UpdateData(TRUE);

if (HThread==NULL)
{
HThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)AnalyzThreadFunction,(LPVOID)this,0,&ThreadID);
}
else
{
ResumeThread(HThread);
}
//InitAnalysis();
//   RunAnalysis();

}
2.线程函数(注意是全局函数,不属于某一个类)

void AnalyzThreadFunction(LPVOID lparam)
{
m_bRun=TRUE;
    CSleepAnalysisServiceDlg*pthis=(CSleepAnalysisServiceDlg*)lparam;
    CoInitialize(NULL);
BOOL ini=pthis->InitAnalysis();
BOOL analy=pthis->RunAnalysis();
CoUninitialize();
}


二、在子线程调用主线程的函数


void AnalyzThreadFunction(LPVOID lparam)
{
m_bRun=TRUE;
    CSleepAnalysisServiceDlg*pthis=(CSleepAnalysisServiceDlg*)lparam;
    CoInitialize(NULL);
BOOL ini=pthis->InitAnalysis();
BOOL analy=pthis->RunAnalysis();
CoUninitialize();
}

BOOL CSleepAnalysisServiceDlg::InitAnalysis()


BOOL CSleepAnalysisServiceDlg::RunAnalysis()



三、调用webservice的问题

一段在主线程下调试成功的代码,移植到多线程下就不一定完全可行(虽然编译通过)。

    比如刚刚写的一段调用远程WebService的代码,每次点击“开始”按钮,就报错“尚未调用coinitialize”,检查了一下代码,貌似没发现有啥不妥,没法子,只有百度去了。

    百度后才发现,原来多线程下使用WebService还有“秘密”:必须在使用前初始化COM环境,具体操作如下:
    1、使用前先CoInitialize(nil);
    2、使用完后CoUninitialize;

    上述是delphi语法,C++等也需要如此操作,方法类似。


分享到:
评论

相关推荐

    pb11.5创建以及调用webservice实例

    提供的压缩包文件"webservice_example"可能包含了示例代码、教程文档或者是一个已完成的Web服务调用实例。它可以帮助你更好地理解和实践上述过程,通过查看源代码或执行示例,你可以更直观地了解PB11.5中创建和调用...

    java调用json参数的webservice

    Java是一种广泛使用的编程语言,它具有面向对象、跨平台、多线程以及健壮性等特点。Java在企业级应用中尤为流行,尤其是在构建大型的网络应用程序方面。 JSON(JavaScript Object Notation)是一种轻量级的数据交换...

    C#静态调用webservice

    在C#中,静态调用意味着无需创建Web Service的实例,而是直接通过类名调用其方法。这样可以节省资源,因为不需要为每个请求创建新的对象。要实现这一点,我们需要以下步骤: 1. **添加服务引用**:在C#项目中,首先...

    MULE开发实例1---并行调用多个webservice接口

    在这个特定的实例中,我们关注的是如何使用Mule ESB并行调用多个Web服务接口。这个主题对于那些需要高效处理多个并发请求的系统设计者和开发者来说至关重要。 首先,我们要理解Mule ESB的核心概念。它是基于事件...

    Android axis调用Webservice

    总结,Android利用Axis2调用Web Service涉及服务端接口设计、客户端代码实现、网络请求和数据解析等多个环节。了解这些知识点有助于构建稳定可靠的跨平台通信。在实际开发中,还需要考虑错误处理、性能优化以及安全...

    WinCE PDA开发调用WebService源码 内附代码及演示过程图片

    总之,WinCE PDA开发调用WebService涉及了嵌入式系统开发、.NET框架和Web服务通信等多个方面。通过Visual Studio 2005和.NET Framework 3.5,开发者可以构建功能丰富的PDA应用,利用Web服务实现远程数据访问,提升...

    调用webservice实现天气查询C#程序

    在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,其中...在实际项目中,可能还需要考虑性能优化、错误日志记录、多线程访问等高级特性。理解并熟练运用这些技术,将有助于你构建更健壮、高效的系统。

    Delphi调用C#的Webservice返回Dataset

    1. 使用Delphi的`TWebClient`或`THTTPRIO`组件来发起HTTP请求,调用Webservice。 2. Webservice返回的数据通常是XML格式,因为DataSet在.NET中默认是以XML序列化的。在Delphi中,我们需要解析这个XML,可以使用`XML...

    多线程socket+webservice操作demo

    在IT行业中,多线程Socket和Web Service操作是网络编程中的关键组成部分,广泛应用于分布式系统、服务器端开发以及客户端与服务器之间的数据交换。本示例着重于如何在Java环境中实现多线程Socket通信以及利用Web ...

    Android中调用Webservice实现号码归属地查询案例

    综上所述,Android中调用Webservice查询号码归属地涉及到网络请求、数据格式处理、权限设置、异常处理、线程管理和安全策略等多个方面。开发者需要根据具体需求和环境选择合适的技术栈,确保功能的稳定性和用户体验...

    WebService 实例3

    singleServerMultipleClientSrc可能包含了实现这一功能的示例代码,比如多线程处理、异步I/O或者使用上述的IOCP技术。 通过深入研究这些源码,你可以学习到: - 如何定义和发布一个WebService,包括创建WSDL(Web...

    Android平台调用WebService详解 (实例代码更改)

    本文将详细介绍如何在Android中调用Web Service,并提供一个实例代码的更改,以便进行异步处理,提高应用性能。 首先,我们需要理解Web Service的概念。Web Service是一种基于网络的、能够被其他应用程序(如...

    qt 5使用gsoap发布webservice服务与调用webservice服务(发布端调用端文件都有)

    在"qt 5使用gsoap发布webservice服务与调用webservice服务"的项目中,我们有以下关键步骤: 1. **发布Web服务**: - 首先,你需要使用gSOAP的`wsdl2h`工具从WSDL文件生成头文件,这个文件描述了Web服务的接口。 -...

    android调用webservice获取天气

    在Android开发中,调用Web ...总之,Android调用Web Service获取天气预报涉及网络通信、数据解析、异常处理、UI设计等多个方面,通过合理的技术选型和规范的编程实践,可以构建出高效、稳定且用户体验良好的应用。

    WinForm调用Webservice之(手机号码所在地查询)

    本示例以“WinForm调用Webservice进行手机号码所在地查询”为主题,展示了如何利用C#语言实现这一功能。下面我们将深入探讨这个主题,了解相关的关键知识点。 1. **WinForm基础**: WinForm是.NET Framework提供的...

    webService调用实例

    总的来说,这个Web Service调用实例涵盖了从基本的HTTP请求到高级的异步处理和数据解析等多个方面,对于想要学习或提升Web Service调用能力的开发者来说,是非常宝贵的参考资料。通过深入研究这两个工程,开发者可以...

    .NET多线程详解

    - **异步WebService调用**:Web页面可以通过异步调用来调用WebService,以非阻塞方式执行远程操作。 总结,理解和掌握.NET多线程编程,以及相关的异步操作和同步机制,是构建高效、响应迅速的应用程序的关键。...

    c#调用j2ee webservice 超详细 超傻瓜教程

    1. 异步调用:Web服务调用可能耗时,为了不阻塞UI线程,可以使用C#的异步编程模型(如async/await)。 2. 错误处理:捕获可能出现的异常,例如网络错误、序列化错误等,并进行相应的错误处理。 五、安全性和性能...

    Python基于xmlrpc的webservice服务以及在odoo中的使用

    对于需要处理大量并发请求的情况,可以使用多线程服务: ```python from threading import Thread from xmlrpc.server import SimpleXMLRPCServer class ThreadXMLRPCServer(Thread, SimpleXMLRPCServer): pass ...

    C++中通过Webservice和HTTP协议的网络传输

    可以通过缓存、多线程、异步I/O等方式提高网络通信效率。例如,libevent和libev等库提供了事件驱动的网络编程模型,有助于提升并发处理能力。 8. **测试与调试** 使用工具如curl命令行工具或者Postman可以模拟HTTP...

Global site tag (gtag.js) - Google Analytics