Activex嵌入网页后,刷新网页遇到的问题

fool_leave 2005-03-29 07:29:40
怪了,绝对的怪了。

我做了一个Activex,这个控件在启动的时候会通过线程从网上下载配置文件,然后启动另一个线程来轮循取网络数据。

本来一切正常,运行的很稳定。可是如果网页刷新的话,就会抱错。(如果不是刷新,而是点了“转到”按钮,则没有发现抱错现象)

单步调试,发现错误是在初始化后通过线程取网络配置文件时报出来的。

CInternetSession session;
CHttpFile*) pfile = (CHttpFile*)session.OpenURL(configPath,1,INTERNET_FLAG_TRANSFER_ASCII|INTERNET_FLAG_RELOAD|INTERNET_FLAG_DONT_CACHE);
configPath的路径绝对正确,但一调用OpenURL就出错。

(跟踪进OpenURL后,发现错误是从inet.cpp中CStdioFile* CInternetSession::OpenURL的InternetOpenUrl处报出的。)

我实在想不出缘由来了,各位给点意见吧!
...全文
187 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
turnmissile 2005-04-01
  • 打赏
  • 举报
回复
用try catch捕捉异常啊!

具体的处理逻辑就需要看你的具体处理逻辑了,感觉上需要等待其他线程unlock这个stdio文件.说不定一个Sleep就能够解决你的问题.
你也可能需要定义一些事件或者mutex来保证多线程对统一资源的操作同步.
fool_leave 2005-03-31
  • 打赏
  • 举报
回复
configPath应该没有出生命周期吧.我可以看到值得.怎么检查呢?

我觉得有可能是同时打开了一个stdio文件,怎么处理这个异常呢?

期待ing
turnmissile 2005-03-31
  • 打赏
  • 举报
回复
错误是什么???
给我感觉有点像同时打开一个stdio文件,产生的共享冲突,比如共享写操作,共享cache等。如果是这样,只需要正确的处理这样的异常就可以了。
如果是系统错误,检查一下configPath是否出了生命期。
fool_leave 2005-03-30
  • 打赏
  • 举报
回复
我不是下载文件,而是要将文件按照文本读入内存。

为什么不能使用CSTDIOFILE?
etre 2005-03-30
  • 打赏
  • 举报
回复
下载配置文件用URLOpenBlockingStream或
URLDownloadToFile吧,好而且简单
goodheartppl 2005-03-30
  • 打赏
  • 举报
回复
不能使用CSTDIOFILE

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧