Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与asp.net中的backgroundworker结合使用时,计时器不会启动_Asp.net_Multithreading_Timer_Backgroundworker - Fatal编程技术网

与asp.net中的backgroundworker结合使用时,计时器不会启动

与asp.net中的backgroundworker结合使用时,计时器不会启动,asp.net,multithreading,timer,backgroundworker,Asp.net,Multithreading,Timer,Backgroundworker,我有一个asp.net网页,它使用“backgroundworker”与一个进行耗时工作的类进行交互。backgroundworker在网页中启动一个名为“worker\u ProgressChanged”的例程 这是可行的,我将报告的进度存储在会话变量中 但现在我必须告诉我的网页的进展。所以我做了下面的事情。我在更新面板中放置了一个计时器,我希望它在代码背后触发一个计时器事件。在该计时器事件中,我希望检索会话变量,并在没有backgroundworker的情况下更新标签(也在updatepan

我有一个asp.net网页,它使用“backgroundworker”与一个进行耗时工作的类进行交互。backgroundworker在网页中启动一个名为“worker\u ProgressChanged”的例程

这是可行的,我将报告的进度存储在会话变量中

但现在我必须告诉我的网页的进展。所以我做了下面的事情。我在更新面板中放置了一个计时器,我希望它在代码背后触发一个计时器事件。在该计时器事件中,我希望检索会话变量,并在没有backgroundworker的情况下更新标签(也在updatepanel中),计时器会启动。但对于背景工作者来说,情况并非如此


有关进程事件触发的某些内容只会关闭计时器触发或查找其事件处理程序的功能

有人对此有想法吗?代码如下:

     <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

    <center>
    <table>
        <tr><td>
           <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always" >
              <ContentTemplate>
              <asp:TextBox ID="TextBoxLog" runat="server" TextMode="MultiLine" Rows="5"  Width="550px" ReadOnly="true" Visible="false" BackColor="sandybrown"></asp:TextBox>
                  <asp:Timer ID="Timer1" runat="server" Interval="1000" Enabled="false"></asp:Timer><br />
                  <asp:Label ID="Labelerror2" SkinID="errorlabel" runat="server"  />
               </ContentTemplate>

           </asp:UpdatePanel>



            </td></tr>
        <tr><td>
            <asp:Label ID="Label1" runat="server" Text="Please enter the entire path of the video (on your PC) to upload to Azure" SkinID="ordinarylabel"></asp:Label></td></tr>
           <tr><td style="text-align:center">
               <asp:TextBox ID="TextBoxFileName" runat="server" Width="273px"></asp:TextBox>
               <asp:RequiredFieldValidator ID="RequiredFieldValidatorFilename"   ControlToValidate="TextBoxFileName" runat="server" Display="Dynamic"
                    ErrorMessage="Please enter a file name">*</asp:RequiredFieldValidator>


               </td></tr>
           <tr><td style="text-align:center">

               <asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" />

               <asp:Button ID="ButtonSubmit" runat="server" Text="Submit" />
               </td></tr>
    </table>
        <asp:Label ID="LabelError" SkinID="errorlabel" runat="server" EnableViewState="false" ClientIDMode="Static" />
         <asp:Label ID="LabelExperiment" SkinID="errorlabel" runat="server" EnableViewState="false" ClientIDMode="Static" />
        </center>

===================
Imports System.ComponentModel
Partial Class zOwner_UploadAzure
    Inherits System.Web.UI.Page

    Protected Sub ButtonSubmit_Click(sender As Object, e As EventArgs) Handles ButtonSubmit.Click
        Dim strName As String
        strName = Me.TextBoxFileName.Text.Trim

        If Not ClassStrings.IsValidFileName(strName, True) Then
            Me.LabelError.Text = "Error, the filename you supplied does not fit the Windows format of filenames."
            Exit Sub
        End If
        Me.TextBoxLog.Visible = True
        AzureNameSpaceGid.Azurex.userpcfilename = strName
        AzureNameSpaceGid.Azurex.username = Membership.GetUser.UserName
        Dim worker As BackgroundWorker = New BackgroundWorker()
        worker.WorkerReportsProgress = True
        AddHandler worker.DoWork, AddressOf AzureNameSpaceGid.Azurex.UploadFile

        AddHandler worker.ProgressChanged, New ProgressChangedEventHandler(AddressOf worker_ProgressChanged)
        Me.Labelerror2.Text = "Starting..."
        worker.RunWorkerAsync()
        Me.Timer1.Enabled = True
        Session("hitsubmit") = True
        '  AzureNameSpaceGid.Azurex.UploadFile(strName)
        '  Me.LabelError.Text = "The Upload to Azure is complete - <a href='addvideo500.aspx'>click here</a> to add the video to rateforsuccess."
    End Sub



    Private Sub worker_ProgressChanged(sender As Object, e As ProgressChangedEventArgs)
        Dim obj As Object
        obj = e.UserState
        Dim strMessage As String
        strMessage = obj.ToString
        If strMessage.StartsWith("URL_") Then
            Session("azureurl") = strMessage.Substring(4)
            Response.Redirect("addvideo500.aspx")
        ElseIf strMessage.StartsWith("LOGMESSAGE_") Then

            Session("strerror") = Session("strerror") & vbCrLf & "<br />" & strMessage.Substring(11)
        Else

            Session("strprogress") = Session("strprogress") & vbCrLf & strMessage
        End If

        ' LabelError.Text = ("Progress: " & e.ProgressPercentage.ToString() & "%")
    End Sub


    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        ' Response.AddHeader("cache-control", "no-cache")
        If Not Page.IsPostBack Then
            Session("hitsubmit") = False
            Session("strprogress") = ""
            Session("strerror") = ""
        End If
        If Session("hitsubmit") Then
            Me.Timer1.Enabled = True
            Me.TextBoxLog.Visible = True
        End If
    End Sub

    Protected Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Me.TextBoxLog.Text = Session("strprogress")
        Me.Labelerror2.Text = Session("strError")
        Me.LabelExperiment.Text = Me.LabelExperiment.Text & "***"
    End Sub
End Class
=======================
将视频添加到rateforsuccess。“
端接头
私有子工作者\u ProgressChanged(发送者作为对象,e作为ProgressChangedEventArgs)
作为对象的Dim obj
obj=e.UserState
Dim strMessage作为字符串
strMessage=obj.ToString
如果strMessage.StartsWith(“URL_389;”),那么
Session(“azureurl”)=strMessage.Substring(4)
重定向(“addvideo500.aspx”)
ElseIf strMessage.StartsWith(“LOGMESSAGE_uu”)然后
Session(“strerror”)=Session(“strerror”)&vbCrLf&“
”和strMessage.Substring(11) 其他的 会话(“strprogress”)=会话(“strprogress”)&vbCrLf&strMessage 如果结束 'LabeleError.Text=(“进度:&e.ProgressPercentage.ToString()&“%”) 端接头 受保护的子页加载(发件人作为对象,e作为事件参数)处理Me.Load 'Response.AddHeader(“缓存控制”,“无缓存”) 如果不是Page.IsPostBack,则 会话(“hitsubmit”)=False 会话(“strprogress”)=“” 会话(“strerror”)=“” 如果结束 如果会话(“提交”),则 Me.Timer1.Enabled=True Me.TextBoxLog.Visible=True 如果结束 端接头 受保护的子Timer1\u Tick(发送方作为对象,e作为事件参数)处理Timer1。Tick Me.TextBoxLog.Text=会话(“strprogress”) Me.Labelerror2.Text=会话(“strError”) Me.LabelExperiment.Text=Me.LabelExperiment.Text&“***” 端接头 末级 =======================
没有足够的空间来放置实际的azure类。
感谢

“有关进程事件触发的某些信息只会关闭计时器触发或查找其事件处理程序的功能。“我觉得这不太可能。在任何情况下,除非您提供一些代码,否则无法确认或否认。好的,我将通过编辑在原始帖子中插入代码。我说的是真的,我已经测试了所有的步骤,一块一块地添加。@JimMischel:我已经插入了尽可能多的代码,实际的azure库太大了。