Winforms VB.NET - как вызвать класс несколько раз, но его объекты являются частными для каждого экземпляра
Я не знаю, правильно ли я обозначил этот вопрос выше, поэтому, вероятно, будет более ясно, если я объясню свою проблему.
Я хочу, чтобы каждый класс был открыт и чтобы их экземпляры были отдельными - в VB6 в свойствах проекта был флажок "квартира с резьбой", но я, похоже, не могу найти ничего подобного в VS, и я предполагаю (и я могу ошибаться), что эта настройка в VB6 сделает каждый экземпляр этого класса индивидуальным и не будет мешать работе каждого экземпляра.
У меня есть "главное приложение winforms", которое должно вызывать созданный мной DLL-класс.
Пользователь может открыть этот класс DLL несколько раз.
В этом классе DLL есть соединение с базой данных. Соединение с базой данных открывается и остается открытым в течение всего срока службы того класса, который открыт и закрыт при выгрузке формы класса dll.
Если у меня запущено 2 или более таких классов DLL и один из них закрывается, то при закрытии библиотеки DLL соединение с базой данных также закрывается - однако оно закрывает соединение с базой данных для всех открытых классов DLL.
Мне нужно, чтобы экземпляр класса DLL, который был создан, имел свои собственные соединения и т. д. (которые управляются в этом классе DLL), чтобы он был отделен от других нескольких экземпляров этого класса DLL, которые были вызваны.
Есть ли в этом смысл? - чтобы упростить этот пример:
У меня есть проект winforms, одна кнопка.
Я нажимаю на эту кнопку, и код
Dim NewForm как новый ABC_Class
NewForm.Аргумент MyVar=Метка1.Текст
NewForm.DoStuff
класс DLL вызывается, открывает соединение с базой данных и извлекает некоторые данные в зависимости от свойств, назначенных этому классу из основного приложения.
Я выполняю тот же самый щелчок по кнопке, за исключением Label1.Текст у меня другое значение, поэтому, нажав на кнопку, вызывается DLL-класс, появляется форма и данные, относящиеся к Label1.Появляется текстовое значение - отлично - теперь у меня открыты 3 формы (основная форма winforms с кнопкой) и два класса DLL, отображающих информацию, которая была актуальна в момент вызова.
Соединение с базой данных остается открытым для обоих открытых классов. Я закрываю один из классов, и он закрывает соединение с базой данных.
На оставшемся открытом классе DLL есть кнопка, которая будет идти и извлекать что - то еще из базы данных, но она не работает, потому что соединение было закрыто-я предполагаю, из исходного класса DLL, который я только что закрыл.
Если у меня есть переменные, хранящиеся в одном классе - это влияет на то, когда была создана вторая копия класса, даже если я использовал "новый" в своем объявлении?
Даже переменные разделяются между двумя новыми экземплярами этого класса (я уже пробовал) - я не знаю, куда идти с этим, так как мне нужно, чтобы этот класс открывался несколько раз с одной и той же кнопки, но содержал свои собственные объекты и не был разделен.
Я знаю, что это очень простой вопрос, но это тот, который я не могу найти решения, погуглив его - возможно, я использую неправильную терминологию, но я не могу найти слов, чтобы описать то, что я пытаюсь достичь, чтобы вернуть результаты, которые я ищу.
Что я уже пробовал:
Создал две кнопки в основной форме, одна из которых объявляет dim newFrm1 как новую, а другая-с newFrm2 как еще одно объявление, но переменные из обоих экземпляров остаются общими и не являются частными для их собственного экземпляра.
Я даже загуглила "vb.net эквивалент квартиру собственность собственность-нить проект в VB6" и я только показаться, чтобы получить связанные в VB6 com предметами вместо vb.net вызов vb.net dll файлы.
Самое близкое, что я видел к этому, был аналогичный запрос, и предлагаемые решения состояли в том, чтобы иметь отдельные физические копии файлов DLL для выполнения разных вещей - это кажется мне смешным, конечно, истинный отдельный экземпляр одной и той же DLL может быть создан - он работал в VB6, и я почти уверен, что .net-это нагрузка лучше, чем vb6, что там будет простой параметр или sub, который мне нужно создать, чтобы сделать это для меня.