目前我在同一个解决方案下有两个独立的C#项目,我们称之为Window.exe和Console.exe。 Window.exe是一个独立运行的WPF MVVM应用程序。
要消除一个小问题,我的目标是将Window.exe转换为Window.dll,然后使用Console.exe加载Window.dll。我试图调用App.Run(),或者在App_Startup中移动例程,该例程用于将主窗口启动到单独的方法并调用它。运行Window.dll的新线程无法真正持续。当我在调试中进入GUI时,它能够填充GUI,但我无法与它进行交互。
关于我应该如何进行的任何想法?
答案 0 :(得分:3)
我能够通过做两件事来实现这一目标:
您需要将控制台应用程序中的Main方法标记为STAThread方法,因为UI需要位于STA线程上。如果你不这样做,那么当你调用主窗口的构造函数时,你会得到一个异常。
确保在Run()之前调用InitializeComponent()。如果你没有,应用程序将会运行,但窗口不会首先设置。
我能够在一个解决方案中使用它,我也有一个WPF主应用程序和控制台应用程序用于测试:
#include<stdio.h>
void printTriangleRow(int rowNumber) {
printf("|");
for(int i = 0; i < rowNumber; ++i) {
printf(" ");
}
printf("\\\n");
}
void printTriangleBottom(int sideLength) {
printf("+");
for(int i = 0; i < sideLength; ++i) {
printf("-");
}
printf("+\n");
}
void printTriangleWithSideLength(int sideLength) {
printf("+\n");
for(int i = 0; i < sideLength; ++i) {
printTriangleRow(i);
}
printTriangleBottom(sideLength);
}
int main() {
int rowCount;
printf("Enter number of rows: \n");
scanf("%d", &rowCount);
printTriangleWithSideLength(rowCount);
}