Как выполнять код отдельно от форм

246
06 января 2018, 00:17

Изначально, когда создаешь проект (а именно Приложение Windows Forms), доступен для редактирования файл Form1.cs. Есть необходимость в создании отдельного кода, который будет иметь связь со всем формами, при этом он должен работать независимо от них, даже при закрытии любой формы, но завершаться при закрытии всех форм.

Answer 1

Каждый проект имеет свою точку входа и WinForms не исключение, помимо одной формы по умолчанию также создается класс Program и в нем метод static void Main() - именно с него приложение начинает свою работу, там же вы и увидите открытие окна: Application.Run(new Form1());

Вы можете добавить в этот метод свою логику, какие-то статические публичные свойства и методы в класс Program и будете иметь доступ к ним из любого места.

Например, пусть у нас есть некий класс Data, содержащий некие данные, которые могут потребоваться в любом месте приложения, добавим в класс Program свойство:

public static Data AppData { get; private set; }

и в методе Main() запишем в это свойство некоторое значение:

[STAThread]
static void Main()
{
    AppData = new Data(...);
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
}

Теперь из любого места в приложении мы можем получить эти данные:

var veryImportantData = Program.AppData....;
READ ALSO
Обработка исключений другого потока

Обработка исключений другого потока

В ViewModel имеется команда, которая запускает загрузку данных с порта и расшифровку их:

218
Импорт и экспорт в xml , json, yml [требует правки]

Импорт и экспорт в xml , json, yml [требует правки]

Необходимо экспортировать и импортировать в три формата (xml , json, yml)Как лучше это сделать? Помогите с примером и советом

177
Как передать в параметр метода метод - Unity

Как передать в параметр метода метод - Unity

Есть Скрипт_1 - SoundManagercs, в нем содержится:

221