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

这个网站的源代码怎么查?
QQ空间:http://user.qzone.qq.com/3536241/blog/1325463824


此网页的源代码怎么找不到“定时器原型”这几个字,要找到这几个字,在哪里找?

------解决方案--------------------
"title":"定时器原型",

右键,看源代码不是有吗
------解决方案--------------------

假如你曾经开发过 Microsoft Win32 的应用程序,你知道 SetTimer 函数是 API 之一,通过这个函数可以指定的一个窗口接收到来自系统时间周期的 WM_TIMER 消息。用这个方法遇到的第一个问题是你需要一个窗口去接收消息,所以你不能用在控制台应用程序中。另外,基于消息的实现并不是非常精确,假如你的应用程序正在处理其它消息,情况有可能更糟糕。

相对基于 Win32 的定时器来说, .NET 中一个很重要的改进就是创建不同的线程,该线程阻塞指定的时间,然后通知一个回调函数。这里的定时器不需要 Microsoft 的消息系统,所以这样就更精确,而且还能用于控制台应用程序中。以下代码显示了这个技术的一种实现:

class MainApp

{

static void Main()

{

MyTimer myTimer = new MyTimer(2000);

Console.ReadLine();

}

}

class MyTimer

{

int m_period;

public MyTimer(int period)

{

Thread thread;

m_period = period;

thread = new Thread(new ThreadStart(TimerThread));

thread.Start();

}

void TimerThread()

{

Thread.Sleep(m_period);

OnTimer();

}

void OnTimer()

{

Console.WriteLine("OnTimer");

}

}

这个代码一般用于 Wn32 应用中。每个定时器创建独立的线程,并且等待指定的时间,然后呼叫回调函数。犹如你看到的那样,这个实现的成本会非常高。如果你的应用程序使用了多个定时器,相对的线程数量也会随着使用定时器的数量而增长。

现在我们有 .NET 提供的线程池,我们可以从池中改变请求的等待函数,这样就十分有效,而且会提升系统的性能。我们会遇到两个问题:

n 假如线程池已满(所有的线程都在运行中),那么这个请求排到队列中等待,而且定时器不在精确。

n 假如创建了多个定时器,线程池会因为等待它们时间片失效而非常忙。

为了避免这些问题, .NET 框架的线程池提供了独立于时间的请求。用了这个函数,我们可以不用任何线程就可以拥有成千上万个定时器,一旦时间片失效,这时,线程池将会处理这些请求。

这些特色出现在两个不同的类中:

System.Threading.Timer

定时器的简单版本,它运行开发人员向线程池中的定期执行的程序指定一个代理( delegate ) .

System.Timers.Timer

System.Threading.Timer 的组件版本,允许开发人员把它拖放到一个窗口表单( form )中,可以把一个事件作为执行的函数。

这非常有助于理解上述两个类与另外一个称为 System.Windows.Forms.Timer .的类。这个类只是封装了 Win32 中消息机制的计数器,如果你不准备开发多线程应用,那么就可以用这个类。

------解决方案--------------------
在IE8、9中是按F12调出Developer Tools(或者从工具菜单中选取)
在FireFox中安装FireBug
在Chrome中,安装开发者工具
------解决方案--------------------
查看源代码看到的是请求页面的时候从网站获得的html数据。
无法反映ajax脚本对dom的修改变化。