Yêu cầu thg 5 9, 2019 5:15 SA 275 0 0
  • 275 0 0
0

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

Chia sẻ
  • 275 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
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí