日期:2014-05-18  浏览次数:20457 次

高难`高手进200分不够再加
现在有一人项目,在WebService中要调用Delphi中的Dll,   其中Delphi的Dll中有一个回调函数,在我的WebService中无法直接调用这个回调函数获得返回的结果,只有通过一个延时或其它什么处理机制,在这个回调函数中赋值给我定义的一个Session变量或静态成员变量,然后我再在WebService函数中对这个Session变量或静态成员变量进行判断.   如果条件满足,则返回正确的结果,反之.   我实在是找不出如何实现这种方式的方法.   求高人们指点.

------解决方案--------------------
可以试着定义委托来实现DLL中的回调。
------解决方案--------------------
回调函数是什么东西啊?
------解决方案--------------------
不懂哦```学习下``
------解决方案--------------------
不懂,帮顶一下
------解决方案--------------------
这也没有什么好办法还不如自己写个类似触发器的东西

大概意思```其实回调也是有一个线程时时判断
Session[ "iMsgType "] = test.callback();

while(time <timeout)
{
HashGetValue();
time++
}

bool HashGetValue()
{
if(Session[ "iMsgType "]==null)
{
System.Threading.Thread.Sleep(50);
return false;
}

return true;
}
------解决方案--------------------
比较难啊,帮定
------解决方案--------------------
up
------解决方案--------------------
看看http://dev.csdn.net/article/69/69261.shtm可能会有帮助
------解决方案--------------------
帮顶一下。这个没有搞过
------解决方案--------------------
帮顶
------解决方案--------------------
自己再写一个DLL,把它那个DLL给封装起来,这样你就可以直接调动了吧
------解决方案--------------------
UP+学习
------解决方案--------------------
思路有问题

------解决方案--------------------
不好实现啊。回调函数还是Delphi的
------解决方案--------------------

------解决方案--------------------
在回调过程中设一个Sleep能否!!等执行完毕再释放这个sleep
------解决方案--------------------
Session变量或静态成员变量
-------------------------
楼主,Delphi的DLL能调用.Net中的Session和静态成员变量么?我对这个有疑问。
如果能调用,就有办法,通知.Net程序;
如果不能调用,可以用.Net监控中间变量,每隔多少毫秒去检查是否已经赋值。
第一个办法是主动通知的思路,第二个办法大体上是轮询的办法了。

------解决方案--------------------
sleep一下 等它返回 你再返回