Чем отличается Thread в консольном приложении от Thread в WPF-приложении - PullRequest
1 голос
/ 08 мая 2019

Я пишу программирование на c # с консольным приложением и wpf-приложением с одинаковым кодом, но результат будет разным.

Вот код в Консольном приложении.

javaAccessBridge = Jab.Instance;
javaAccessBridge.Init();
using (JavaApplication app = new JavaApplication())
{
    JavaApplicationContext context = new JavaApplicationContext()
    {
         ExecutableFile = @"c:\Dev\sq.jar"
     };
    app.Launch(context);
}
Thread.Sleep(5000);
// return 0, not found any jvm instance.
javaAccessBridge.EnumJvms().Count;

Вот код в WPF

public MainWindow()
{
    InitializeComponent();
    javaAccessBridge = Jab.Instance;
    javaAccessBridge.Init();
}
private void Find_Click(object sender, RoutedEventArgs e)
{
    using (JavaApplication app = new JavaApplication())
    {
         JavaApplicationContext context = new JavaApplicationContext()
        {
             ExecutableFile = @"c:\Dev\sq.jar"
        };
        app.Launch(context);
     }
     // count 1 jvm instance.
   List<AccessibleJvm> jvms = javaAccessBridge.EnumJvms();
}

Я запускаю приложение, затем нажимаю кнопку, вызываю Find_Click, и jvms.Count = 1. Я думаю, что причина в том, что в WPF слишком много потоков, один для MainWindow () и второй для Find_Click. но кажется что это не правильно. потому что я написал консольное приложение в 2 потока, но результат не изменился.

javaAccessBridge = Jab.Instance;
public void InitLib()
{    
    javaAccessBridge.Init();
}
public void LaunchApp()
{
using (JavaApplication app = new JavaApplication())
{
    JavaApplicationContext context = new JavaApplicationContext()
    {
         ExecutableFile = @"c:\Dev\sq.jar"
     };
    app.Launch(context);
}

Thread init = new Thread(InitLib);
Thread app = new Thread(LaunchApp);
init.Start();
app.Start();
Thread.Sleep(5000);
// still return 0
javaAccessBridge.EnumJvms().Count;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...