コード例 #1
0
        /// <summary>
        /// 在后台制造延迟,不阻塞主线程,延迟后执行指定内容
        /// </summary>
        /// <param name="延迟毫秒数">延迟时间</param>
        /// <param name="执行内容">执行方法体,传递的参数即是调用延迟执行方法的对象</param>
        public static void 延迟执行(this Control o, int 延迟毫秒数, Action <Control> 执行内容)
        {
            定时器 d = new 定时器(延迟毫秒数);

            d.执行完毕事件 += new 定时器.执行完毕代理((s, op, b) => 执行内容(o));
            d.执行(null);
        }
コード例 #2
0
        /// <summary>
        /// 跳转网页,等待网页加载完毕后执行相应指令,如果超时则重新启动跳转行为并重新计时。
        /// 如果跳转网址设为空,则是在等待页面重加载后执行相应操作,通常用于点击按钮后等待页面切换后执行命令时使用。
        /// </summary>
        /// <param name="跳转网址">要跳转的网址</param>
        /// <param name="超时秒数">超时时间设定</param>
        /// <param name="超时代理">超时后执行的特别操作,比如再次点击按钮以重新发起页面跳转操作,可设为空</param>
        /// <param name="执行代理">跳转后执行的代码</param>
        public static void 跳转后执行(this WebBrowser wb, string 跳转网址, int 超时秒数, WebBrowser跳转超时执行代理 超时代理, WebBrowser跳转后执行代理 执行代理)
        {
            定时器 d = new 定时器(超时秒数 * 1000, 500);

            d.执行完毕事件 += new 定时器.执行完毕代理((s, o, b) =>
            {
                if (b)
                {
                    return;
                }
                if (超时代理 != null)
                {
                    超时代理(wb);
                }
                wb.Navigate("about:blank");
                wb.延迟执行(5000, t => wb.跳转后执行(跳转网址, 超时秒数, 超时代理, 执行代理));
            });
            wb.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
            wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
            d.执行(null);
            wb.存入缓存("定时器", d);
            wb.存入缓存("执行代理", 执行代理);
            if (!跳转网址.IsNullOrEmpty())
            {
                wb.Navigate(跳转网址);
            }
        }
コード例 #3
0
        static void test_定时器()
        {
            定时器 T = new 定时器(1000);

            T.运行内容 = () => { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); i++; };
            T.停止条件 = () => { return(i >= 5); };
            T.启动();
        }