Asked May 9th, 5:15 AM 72 0 0
  • 72 0 0
+1

Điểm khác nhau giữa Console app và WPF application trong .Net

Share
  • 72 0 0

Xin chào mọi người, mình đang bắt đầu lập trình với C# trong VS. Mình có một đoạn code như sau chạy trên console application:

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;

và một đoạn code tương tự trên 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();
}

Vì chạy trên wpf, Jab của mình đã thấy 1 instance java vừa dc launch, nên mình nghĩ do mình init jab trên hàm main(), mình nghĩ là nó chạy trên 1 luồng, và việc lấy jvm instance thì đc chạy ở luồng khác nên đọc được,

Mình làm tương tự như vậy, tạo 2 Thread để chạy trên console app, nhưng vẫn k thu được kết quả.

Mình nghĩ là do cơ chế của WPF vs Console app khác nhau, các bạn có thể giúp mình giải thích được ko ah?