Asked thg 5 9, 2019 5:15 SA 236 0 0
  • 236 0 0
0

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

Share
  • 236 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?

Viblo
Let's register a Viblo Account to get more interesting posts.