2014-11-18 1 views
0

Я запускаю процесс в asp.net, и я хочу, чтобы пользователь знал, когда процесс запущен и когда процесс завершен. Это код, у меня естьКак указать начало и конец потока в asp.net

Private Sub test() 
      For i As Integer = 0 To 1000 Step 1 
       Thread.Sleep(100) 
      Next 
      Label1.Text = "Process Done" 
    End Sub 

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click 
     Label1.Text = "Progress Started" 
     Dim MyTS As New ThreadStart(AddressOf test) 
     Dim MyThead As New Thread(MyTS) 
     MyThead.Start() 
End Sub 

Я поставил thead.sleep в процессе здесь, потому что код достаточно обширен и вызовет значительную задержку, но потом, когда я запускаю код и метка указывает на «Процесс работы », он никогда не указывает« процесс выполнен ».

+1

Нет исключений? Вы обновляете элемент пользовательского интерфейса из не-UI-потока, который должен поднимать хотя бы исключение ... Я думаю, –

+0

Ну, я не получаю исключения, кроме того, что «процесс Done» никогда не отображается. Однако, как мне обойти это так или иначе – Shagragada

+0

Вам нужно посмотреть, как работает протокол http. У вас нет соединения с вашим серверным кодом для клиента. Долгосрочный процесс, вероятно, будет лучше размещен в службе Windows, и вы можете найти «индикатор прогресса asp.net» для некоторых предложений по уведомлению пользователя. –

ответ

0

Вам необходимо проверить, требуется ли Invoke с помощью Me.Label1.InvokeRequired, и в случае необходимости вы вызываете функцию для установки текста.

Полный пример здесь: Make Thread-Safe Calls to Windows Forms Controls

Смежные вопросы