• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Msgbox Или Messagebox.show Чтобы Не Стопорили Поток

  • Автор темы BStudio
  • Дата начала
B

BStudio

Мне нужно чтобы показывался MsgBox и поток не останавливался и не ждал от пользователя нажатия "ОК", а сразу писал в файл.

В моём случае, такой код:
Код:
	MsgBox("asdasd")
IO.File.Create(CurDir() & "\file.txt").Close()
FileOpen(1, CurDir() & "\file.txt", OpenMode.Output, OpenAccess.Write, OpenShare.Shared)
Print(1, "sadasdasdsa")
FileClose(1)

В голове есть предположение, что это можно осуществить посредством BackgroundWorker, но к сожалению, я ни разу так не делал, так что, кто может, помогите, приведите хотя бы кусочек кода. Желательно, на VB.NET. :blush:

Всем заранее большое спасибо.
 
C

CSerX

Ложешь BackgroundWorker на форму, у него есть событие DoWork на него вешаешь обработку, перед тем как вызовешь MsgBox, у BackgroundWorker вызовишь RunWorkerAsync и усё
 
B

BStudio

Ложешь BackgroundWorker на форму, у него есть событие DoWork на него вешаешь обработку, перед тем как вызовешь MsgBox, у BackgroundWorker вызовишь RunWorkerAsync и усё

:unsure:

я это знаю. я забыл упомянуть, что тип приложения Пустой проект. Т.е. ни о каких формах речи не идёт :KillMe: я тогда попробую осуществить эту затею в коде, если получится, выложу сюда =)

CSerX
, спасибо за участие :trash:
 
B

BStudio

:unsure:

Полностью рабочий, на несколько раз проверенный, оптимизированный код.

Тип проекта: Пустой проект
Среда разработки: MS Visual Studio 2010 ultimate :KillMe:
Язык: Visual Basic .NET :trash:

Код:
Imports System.IO
Imports System.ComponentModel

Module engine

Private WithEvents BgWorker As New BackgroundWorker
Private ExeCloseAllowed As Boolean = False

Private Sub backgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As DoWorkEventArgs) Handles BgWorker.DoWork
MsgBox("message")
ExeCloseAllowed = True
End Sub

Sub Main()
BgWorker.RunWorkerAsync()
On Error Resume Next
Dim f$ = CurDir() & "\result.sys"
File.Delete(f)
File.Create(f).Close()
FileOpen(1, f, OpenMode.Output, OpenAccess.Write, OpenShare.Shared)
PrintLine(1, "SUCCESS")
FileClose(1)
Do Until ExeCloseAllowed : Threading.Thread.Sleep(100)
Loop
End Sub

End Module

P.S. Модеры, закройте, пожалуйста, тему...
 
A

a0z

ExeCloseAllowed надо объявлять как volatile, иначе можно огрести проблем с оптимизацией
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!