xin chào các bạn trong forum, mình đang bắt đầu làm việc với .Net. Hôm nay mình gặp một vấn đề về cách hoạt động của 2 loại ứng dụng trong .net là console app và wpf app, winform app.
mình có đoạn code sau, gọi đến unmanage code, viết trong hàm main của console app:
var javaAccessBridge = Jab.Instance;
javaAccessBridge.Init();
// launching a java appication
using (JavaApplication j = new JavaApplication())
{
var applicationContext = new JavaApplicationContext()
{
ExecutableFile = @"c:/Dev/sq.jar"
};
j.Launch(applicationContext);
}
//enumrable jvm instance
javaAccessBridge.Enumjvms().Count; // return 0,not found any jvm instance.
và đoạn code tương tự ở trong 1 ứng dụng 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 is 1, found 1 jvm instance.
List<AccessibleJvm> jvms = javaAccessBridge.EnumJvms();
}
Ban đầu mình nghĩ trong wpf việc khởi tạo javaAccessBridge đc tách biệt riêng ở MainWindow, có thể nó chạy 1 Thread, còn việc launch java app, và enumrable jvm ở một thread khác nên việc enumrable thành công.
mình cũng đã thử với console app, cho 2 đoạn này chạy ở 2 thread khác nhau, nhưng ko được.
Có phải là do ứng dụng WPF, WF có cơ chế hoạt động khác với Console application ko các bạn?