在c#中轮询一个url

Posted

技术标签:

【中文标题】在c#中轮询一个url【英文标题】:Polling for a url in c# 【发布时间】:2011-10-20 16:36:20 【问题描述】:

我正在编写一个 Systray 应用程序,它会轮询以查看特定 url 是否在 IE 中打开,如果检测到它会弹出通知。

它不需要是实时的,只需要检测页面是否打开并提示操作。

以这种方式进行轮询的最有效方法是什么?我已经整理了一些代码来检查网站是否打开:

SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows();
        string filename;
        foreach (SHDocVw.InternetExplorer ie in shellWindows)
        
            filename = Path.GetFileNameWithoutExtension(ie.FullName).ToLower();
            if (filename.Equals("iexplore"))
            
                string[] urlParts = (ie.LocationURL.ToString()).Split('/');
                string website = urlParts[2];
                if (website == "myapp:8080")  appOpen = true; ;
            
        

如果 appOpen 返回 true,则应该触发通知。

我想我需要处理这个问题,因为应用程序上还有一个菜单。我希望这是尽可能小的资源占用。或者,如果我可以使用一些观察者,这可能是一个更好的方法。 (虽然我也需要检查 Chrome 浏览器。

【问题讨论】:

所以,你有一些似乎可以工作的代码。问题是什么? 我有代码来做测试,但不知道最好的方法是让这个不断轮询。 (即目前它将运行一次,仅此而已。我希望它不断检查 url 是否打开。) 【参考方案1】:

您可以使用Timer 并集成您的代码,以检查计时器滴答中的 URL。当然,如果 URL 在计时器的滴答声之间打开然后关闭,您将不会知道。

【讨论】:

以上是关于在c#中轮询一个url的主要内容,如果未能解决你的问题,请参考以下文章

在 IE 中轮询的好的 setTimeout 间隔是多少?

确定何时播放缓冲区而不在 OpenAL 中轮询源

在python中轮询键盘(检测按键)

在windows中轮询CTS线路的状态

如何根据条件从优先级队列中轮询值

如何避免在 React Native 中轮询服务器以获取新数据?