Asp.net 可能-如果在x秒内未加载,是否取消用户控件渲染?

Asp.net 可能-如果在x秒内未加载,是否取消用户控件渲染?,asp.net,multithreading,user-controls,captcha,recaptcha,Asp.net,Multithreading,User Controls,Captcha,Recaptcha,这可能是一个百灵鸟,但对于recaptcha控件来说,有时渲染需要很长时间,这可能吗 如果渲染时间超过5秒,我想停止渲染对象并显示我自己的验证码 我会在页面加载时启动一个计时器,如果已经过了5秒,在recaptcha控件(prerender?)中的某些事件中,我会取消渲染或使其不可见,或者类似的事情。它是第三方用户控件,所以我没有源代码 更新: 我在发布后尝试了下面的代码。如果用户控件无法连接其服务器,也就是说,我将断开internet连接,但当控件等待服务器返回时,如果有很长时间的暂停,则没有

这可能是一个百灵鸟,但对于recaptcha控件来说,有时渲染需要很长时间,这可能吗

如果渲染时间超过5秒,我想停止渲染对象并显示我自己的验证码

我会在页面加载时启动一个计时器,如果已经过了5秒,在recaptcha控件(prerender?)中的某些事件中,我会取消渲染或使其不可见,或者类似的事情。它是第三方用户控件,所以我没有源代码

更新:

我在发布后尝试了下面的代码。如果用户控件无法连接其服务器,也就是说,我将断开internet连接,但当控件等待服务器返回时,如果有很长时间的暂停,则没有意义。即使我将毫秒间隔更改为1,控件也会渲染

<MTAThread()> _
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not IsPostBack Then
        Dim ucChk As New UCExistenceChecker(recaptcha, Me)
        Dim doFindUC As System.Threading.TimerCallback = AddressOf ucChk.FindUC
        Dim stateTimer As System.Threading.Timer = New System.Threading.Timer(doFindUC, Nothing, 0, 5000)
    End If

End Sub

Public Class UCExistenceChecker

    Dim _r As Recaptcha.RecaptchaControl
    Dim _pg As Page

    Sub New(ByVal r As Recaptcha.RecaptchaControl, ByVal pg As Page)
        _r = r
        _pg = pg
    End Sub

    Sub FindUC(ByVal stateInfo As Object)
        If _pg.FindControl("recaptcha") Is Nothing Then
            _r.SkipRecaptcha = True  'This "unrenders" the control, sort of.
        End If
    End Sub

End Class
_
受保护的子页加载(ByVal sender作为对象,ByVal e作为System.EventArgs)处理Me.Load
如果不是的话,我会回来的
Dim ucChk作为新的UCExistenceChecker(recaptcha,Me)
Dim doFindUC As System.Threading.TimerCallback=ucChk.FindUC的地址
Dim stateTimer As System.Threading.Timer=新的System.Threading.Timer(doFindUC,Nothing,0,5000)
如果结束
端接头
公共类检查程序
作为Recaptcha.RecaptchaControl的尺寸
尺寸页,如第页所示
子新建(ByVal r作为Recaptcha.RecaptchaControl,ByVal pg作为第页)
_r=r
_pg=pg
端接头
子FindUC(ByVal stateInfo作为对象)
如果_pg.FindControl(“recaptcha”)什么都不是,那么
_r、 skipprecaptcha=True'这“解除”了控件,有点像。
如果结束
端接头
末级

您可以使用iframe包含验证码块,并订阅readystatechanged或layoutcomplete事件。然后,您可以使用setTimeout()来安排一些JavaScript在您希望等待的最长时间之后运行,如果这两个事件都没有触发,请从DOM中删除iframe并用您自己的替换它。

谢谢。我来看看这个。recaptcha控件的奇怪之处在于,有时加载需要10秒,而屏幕上什么也没有呈现。由于不知道控件中会发生什么,我想很难在到达此阶段之前确定如何停止渲染。