- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当线程退出并且我确定许可证类型已过期时,我试图打开一个新的子表单(BuyNow 表单)。在一个线程中,我打开一个新进程来计算许可证并将信息发送回主进程。问题是,线程在收到所有信息之前退出,所以我无法打开 BuyNow 表单,因为它不知道许可证已过期。
这是代码:
BackgroundWorker BW = new BackgroundWorker();
BW.DoWork += (sender, e) =>
{
Process.Start("LicenseManager.exe", "-Check");
// PSI Info, DataRecieved Event Args and etc.. included in Process.
// Opens the process which takes about 5 second to calculate and post
// license information. Then LicenseMode changes to TrialExpired
// if not activated and trial expired.
};
BW.RunWorkerCompleted += (sender, e) =>
{
// This never gets executed because License is not changed to TrialExpired by the time BW is completed.
if (LicenseMode == License.TrialExpired)
{
new BuyNowForm().Show();
}
};
BW.RunWorkerAsync();
我试图在线程中打开 BuyNowForm,但这会卡住新创建的表单。我不想尝试 Thread.Sleep 并等待几秒钟让进程发送信息。 Thread.Join() 似乎卡住了主 UI 几秒钟。 Process.Exited += 也不起作用,因为进程是在线程中创建的,所以当它退出时,BuyNowForm 仍在线程中创建。
你们能想到什么吗?
最佳答案
Process
类有一个WaitForExit
方法。令人惊讶的是,这将等待,直到进程退出。您必须(显然)在 DoWork
中这样做。
你不应该从另一个线程打开一个表单(这对 DoWork
来说是正确的)。 RunWorkerCompleted
是正确的方法,因为它是在主 GUI 线程中执行的。
关于c# - 在线程中打开一个新的子窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17543540/
对于一个科学实验,我写了一个turtle.py ,它会打开一个 800x480 的窗口并绘制一个缓慢增长的黑点。 turtle.py以 C:\Users\kaza>python C:\Users\ka
我开发了一个 swing 应用程序,但每次运行应用程序时都会打开一个新窗口。我希望如果一个窗口已经打开,则其他窗口不允许打开。 最佳答案 Here是一个 Java 单一应用实例的例子: A singl
有没有办法检测主进程中 Electron 的结构? process.platform 似乎也在 x64 机器上返回 win32,我没有在文档中找到任何获取架构的选项。 最佳答案 你试过 process
public short[] HanningWindow(short[] signal_in ,int pos ,int size) { for (int i= pos; i < pos+si
我有一个具有这些属性的 Electron 窗口: mainWindow = new BrowserWindow({ width: 800, height: 600, title: "Aqu
我有一个 Ubuntu 工作站,我正在尝试引导一个 Windows 节点。 Windows 节点在端口 2222 上打开了 ssh。我一直在关注 http://docs.opscode.com/plu
我是一名优秀的程序员,十分优秀!