Как я могу выполнить команду Minitab через.NET?

Справочные файлы Minitab оказывают поддержку на этом предмете ограниченно, и все примеры находятся в VB. Я плохо знаком с.NET, но я беру ее довольно быстро. Что-то в синтаксисе для команды.

Они обеспечивают этот пример в VB:

Dim MtbApp As New mtb.Application
Dim MtbProj As mtb.Project
Dim MtbCom As mtb.Command
Dim i, j As Integer

MtbApp.UserInterface.Visible = True
Set MtbProj = MtbApp.ActiveProject
MtbProj.ExecuteCommand "RANDOM 30 C1 - C2"
MtbProj.ExecuteCommand "REGRESS C1 1 C2"

и мой код похож на это в C#

var MtbApp = new Mtb.Application();
var MtbProj = new Mtb.Project();
MtbProj = MtbApp.ActiveProject;
MtbApp.UserInterface.Visible = true;
MtbProj.ExecuteCommand(<command>);

то, что я ожидаю, должно произойти, Minitab, должен открыться, и команда должна выполниться. Однако то, что происходит, - то, что два экземпляра Minitab открываются, и ни один не показывает пользовательский интерфейс, я должен найти их в процессах.

7
задан John Saunders 1 July 2010 в 19:25
поделиться

1 ответ

Если вы добавили ссылку на Minitab COM, это должно помочь вам начать:

Mtb.Application MtbApp = null;
Mtb.Project MtbProj = null;
Mtb.UserInterface MtbUI = null;

MtbApp = new Mtb.Application();
MtbProj = MtbApp.ActiveProject;
MtbUI = MtbApp.UserInterface;

MtbUI.Visible = true;
MtbProj.ExecuteCommand("RANDOM 30 C1-C2", Type.Missing); //with C# optional params required
MtbApp.Quit();

Marshal.ReleaseComObject(MtbUI); MtbUI = null;
Marshal.ReleaseComObject(MtbProj); MtbProj = null;
Marshal.ReleaseComObject(MtbApp); MtbApp = null;

Использование COM-объектов для C # может быть сложной задачей. Особенно с их отпусканием, когда вы закончите.

Помните, как правило, никогда не удваивайтесь. Не делайте:

MtbApp.UserInterface.Visible = true;

Вместо этого:

Mtb.UserInterface MtbUI = null;
MtbUI = MtbApp.UserInterface;
MtbUI.Visible = true;

Итак, объект MtbUI можно освободить позже.

12
ответ дан 6 December 2019 в 21:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: