日期:2014-05-17  浏览次数:20548 次

诡异的情况,大小牛帮我解答下
 上代码
 GEWebClientLib.WebOcxClass ocx = new WebOcxClass();
              
                ocx.Initialize(1, 1, 1, 255);
                ocx.LoginUAS("IP", 5555, "用户名", "1234", 0, 0, 0, 0);
                System.Windows.Forms.MessageBox.Show("1");
                ocx.StartMonitor("201716-201716000100000014-0001-0002", -1, 1, 0, 0, 0);
                System.Windows.Forms.MessageBox.Show("2");
                ocx.StartLocalRecord("201716-201716000100000014-0001-0002", ent_name +s  + ".asf", 5);
诡异情况如下:直接运行这段代码,没反应跟似乎这些代码没执行一样。debug下断点必须加在标红的地方,后面的代码才执行。不debug的话,在代码中间加System.Windows.Forms.MessageBox.Show("1");,后面的代码才会执行。
在线等,求高人帮忙解决这个问题

------解决方案--------------------
直接在LoginUAS这个方法里面设置断点进不去吗
------解决方案--------------------
肯定是执行了了的, 楼主再看看代码吧
------解决方案--------------------
最好你反编译看一下GEWebClientLib中的代码,我猜可能是LoginUAS方法还没有执行完毕时,StartMonitor和StartLocalRecord就开始调用,导致出现了问题。
也就是说,你不清楚GEWebClientLib是异步的还是同步的。
------解决方案--------------------
这种问题就得慢慢调试,去掉messagebox加个System.Threading.Thread.Sleep看看有没有反应
------解决方案--------------------
ocx.Initialize(1, 1, 1, 255);
                ocx.LoginUAS("IP", 5555, "用户名", "1234", 0, 0, 0, 0);
这两个方法你确定执行没?有没有返回值什么的?
------解决方案--------------------
引用:
引用:ocx.Initialize(1, 1, 1, 255);
                ocx.LoginUAS("IP", 5555, "用户名", "1234", 0, 0, 0, 0);
这两个方法你确定执行没?有没有返回值什么的?
这两个方法后面加上System.Windows.Forms.MessageBo……


那肯定LoginUSA方法是异步的。
------解决方案--------------------
引用:
大牛给我

引用:最好你反编译看一下GEWebClientLib中的代码,我猜可能是LoginUAS方法还没有执行完毕时,StartMonitor和StartLocalRecord就开始调用,导致出现了问题。
也就是说,你不清楚GEWebClientLib是异步的还是同步的。
我的确是不清楚,这么去解决这种问题呢?
    ……


我不是大牛,你拿 Reflector 反编译看看吧。 或者你问一下DLL创建者
------解决方案--------------------
那就是你接口有问题
如果第三方,你可以问下第三方公司,也应该有开发文档吧

如果在网上找的,那你悲催了,及时反编译,有些地方也是看不了的,只能看个大概