powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вызвать через консоль MyWinForm.exe и передать туда параметр
5 сообщений из 5, страница 1 из 1
Вызвать через консоль MyWinForm.exe и передать туда параметр
    #38625114
--__Александр__--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер. В WinForms и .Net не силен, так что не судите строго.

Что есть.
Я при посильной поддержке гугла создал винформу, которая запускает бесконечный прогресс бар и в асинхронном режиме запускает другой процесс(джоб на скл сервере). Когда джоб отрабатывает, он возвращает параметр и я форму закрываю.
Винформу буду вызывать консольно.

Задача. Так как эта форма будет вызываться для разных джобов, мне нужно научится как-то вызывать ее с параметром(из консоли).
То есть необходимо, во-первых str сделать параметром формы, а во вторых вызывать эту форму с разными значениями переменной.

Подскажите, как это можно реализовать. Спасибо.

Мой код выглдяит примерно так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
Imports SQLServerJobClass
Imports System.Windows.Forms

Public Class Form_ExecLongProcess
    Inherits Form
    Private Sub LongProcess_Load(ByVal sender As System.Object, _
                                 ByVal e As System.EventArgs) _
                                 Handles MyBase.Load
        With ProgressBar1
            .Style = ProgressBarStyle.Marquee
            .MarqueeAnimationSpeed = 100
        End With

        Dim str As String = "Job_Load_task1"
        ProgressBar1.Visible = True
        bgw_Process.RunWorkerAsync(str)

    End Sub

    Private Sub bgw_Process_DoWork(ByVal sender As System.Object, _
                                   ByVal e As System.ComponentModel.DoWorkEventArgs) _
                                   Handles bgw_Process.DoWork

        Dim args As String = e.Argument
        Dim JobStatus As Integer
        Dim JobMessage As String = ""
        Dim obj As SQLServerJobClass.SQLServerJobClass = New SQLServerJobClass.SQLServerJobClass
        Dim FormWaitProgressbar As cppUpload_QORT_data.Form_ExecLongProcess = New Form_ExecLongProcess

        JobStatus = obj.Run(args)
        If JobStatus = 1 Then
            JobMessage = "succeeded!"
        Else
            JobMessage = "failed!"
        End If
        MsgBox(JobMessage, 0, "Upload data")
        Me.Close()
    End Sub
    Private Sub bgw_Process_RunWorkerCompleted(ByVal sender As Object, _
                                               ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) _
                                               Handles bgw_Process.RunWorkerCompleted
        ProgressBar1.Visible = False
    End Sub

End Class





-----------------
open your mind
...
Рейтинг: 0 / 0
Вызвать через консоль MyWinForm.exe и передать туда параметр
    #38625157
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вызвать через консоль MyWinForm.exe и передать туда параметр
    #38625191
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--__Александр__--, аргументы командной строки можно получить из коллекции My.Application.CommandLineArgs. Обработать можно прямо в функции LongProcess_Load:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Private Sub LongProcess_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

	If My.Application.CommandLineArgs.Count = 0 Then
		' Аргументы командной строки не были переданы
		Return
	End If

	Dim str As String = My.Application.CommandLineArgs(0)

	With ProgressBar1
		.Style = ProgressBarStyle.Marquee
		.MarqueeAnimationSpeed = 100
	End With

	ProgressBar1.Visible = True
	bgw_Process.RunWorkerAsync(str)

End Sub
...
Рейтинг: 0 / 0
Вызвать через консоль MyWinForm.exe и передать туда параметр
    #38625428
--__Александр__--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazile,

Спасибо, за подробный ответ, работает )).
...
Рейтинг: 0 / 0
Вызвать через консоль MyWinForm.exe и передать туда параметр
    #38625765
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--__Александр__--, пожалуйста. Имей только в виду что это неудачное решение из-за того что анализ аргументов командной строки спрятан в private функции. Лучшим решением было бы передавать его конструктору формы из функции Main. К сожалению VB.NET "прячет" функцию Main и чтобы её вернуть придется отключить, неплохой в общем-то, application framework. Хотя можно еще переопределить метод OnCreateMainForm и там сделать анализ и передачу параметра.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вызвать через консоль MyWinForm.exe и передать туда параметр
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]