2 wainijcm wainijcm 于 2014.11.01 15:21 提问

C#調用OCX控件問題,如何在另外一个方法中执行A 并获取A事件的执行情况

最近开发时使用到一个第3方提供的ocx控件。其中ocx控件中有一个A方法,以及一个A方法的事件(通过事件中的参数来判断A方法的执行情况)

我的问题是:我写了一个B方法,在B方法中调用了A方法,并要在B方法中等待A事件的执行并判断其执行情况。但是我在B方法中等待A事件超时后才会执行A的事件,即只有退出B方法后A的事件才会执行。求各位大神帮帮忙。小弟入行不久,不知道如何处理。附上代码

后来我在B方法中通过线程去执行的A方法,然后循环判断是否执行了A的事件,Debug调试时发现一早就进入了线程方法中,但是去卡在了A的执行方法处,当B方法中循环等待超时后 线程中才执行A的方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using AxActiveComLib; //导入 aximp 对ActiveComLib.ocx控件进行了转换后的DLL
using ActiveComLib; //导入 aximp 对ActiveComLib.ocx控件进行了转换后的DLL
using System.Windows.Forms;

namespace TestApi
{
public class Test
{
private AxActiveComLib.ActiveComLibClass m_active;

    public Test()
    {
        m_active = new ActiveComLibClass();
        m_active.CreateControl();
        //事件
        m_active.AFunctionComplete += new AxActiveComLib._AFunctionCompleteEventHandler(m_active_AFunctionComplete);
    }

    //执行AFunction后响应事件---告知AFunction执行结果
    private void m_active_AFunctionComplete(object obj, _AFunctionCompleteEvent e)
    {
        e.intReturn; //AFunction 执行情况

        e.errorInfo  //执行失败信息
    }


    public int BtempFunction(string xxx)
    {
        int ret = m_active.AFunction(xxx);
        ////等待 AFunctionComplete 执行 并从事件参数中判断 AFunction 的执行情况--执行成功OR失败
    }

}

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C#调用事件
private void dataGridView1_KeyDown(object sender, KeyEventArgs e) { 这里如何调用btnkill_Click的事件? } private void btnKill_Click(object sender, EventArgs e) { messagebox.shou("123"); } 麻烦说详细点,谢谢! 回答:
C#如何在一个按钮事件中调用另一个按钮的事件代码
private void button1_click(object sender, EventArgs e) { Button2_Click(this, e); } private void Button2_Click(object sender, EventArgs e) { //some code here... }
WinForm中一个窗体调用另一个窗体的控件和事件的方法(附带源码)
先申明下,此文适合和我差不多的菜鸟学习,没有什么高深知识点,不想耽误老鸟们的宝贵时间,如果有什么专业术语不对的还请指正啊。     最近进行WinCE的开发,第一次实际做C/S架构的项目,其中遇到很多问题。这个问题使我记忆深刻,当时在谷歌中搜索了好久都没找到想要的答案,用的就是文章标题中的原话。然后又换成“WinForm中子窗体调用父窗体的控件和事件的方法”,搜到的还是不太多。但我发现原来这个可
A页面触发B页面事件
a.html [html] view plaincopyprint? html>  body>  要传的值  input type='text' id='txtID' name='txtName' value='avalue' /> br>  input type='button' value='open' onclick="window.open('b.html');" 
c#如何取得事件注册的方法
这个问题来自论坛,原文为如何判断事件已经被注册过? 用反射取出事件绑定的委托实例,然后用GetInvocationList就可以得到所有注册的方法了。代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using S
在 WinForm 中使用进度条展示长时间任务的执行进度
原文地址:http://www.cnblogs.com/haogj/archive/2012/12/13/2817047.html 今天有人问道如何在 WinForm 程序中,使用进度条显示长时间任务的执行进度。 这个问题是一个开发中很常见的问题,正好也整理和总结一下。 这个问题我们从两个部分来看,第一,长时间执行的任务如何暴露出其执行进度,第二,WinForm 窗体
WinForm一个窗体调用另一个窗体的控件和事件的方法
假设现在我有一个主窗体Form1,现想在另外两个窗体Form2,Form3中运用不同的方法来实现:修改Form2,Form3中的numericUpDown的值时Form1中textbox值随之改变。 (1)直接将整个窗体作为参数传给另一个窗体 这是Form1中的代码: 这是Form2中代码: (2)使用委托与事件(推荐) Form1中代码: Form3中代码:
jq在添加a链接时绑定事件,在方法中获取表格中的信息
做个笔记,以防忘记。新手一个,欢迎补充。需求:通过ajax后台获取json格式数据,添加到table中,每条数据后面加添加、删除和修改功能。添加和修改用模态框实现。 遇到的问题:在点击修改的时候如何获取该条用户的信息,显示在模态框的相应input中 解决办法(三种):1.方法一(推荐):在生成表格的时候给修改的链接上添加一个属性(如userID=userId),然后给链接上绑定方法,在方法中获取ID
从一窗体调用执行另一个窗体命令
 要实现从一窗体调用执行另一个窗体命令,不同的人会用不同的方法,有的喜欢通过定义一个公用的涵数,在不同窗体调用相同的涵数;也有的用TIMER事件去触发另一个窗体的事件。这里介绍一个小方法跟大家分享:       窗体1为被调用的窗体名,并建一个按钮作为测试对象:      Private Sub Command0_Click()           MsgBox "你已经实现了从一窗体执行另一
当前iframe调用另一个iframe中的元素以及方法
var wd = $(window.parent.document);//整体窗口 var tabdiv = wd.find("#jquery_tab_div_content");//总div var main_iframe = tabdiv.find("iframe[class='LRADMS_iframe on']").contents();//当前div mi