小编spi*_*key的帖子

如何在lightswitch中刷新父屏幕?

我想在从其他屏幕添加新数据后刷新搜索屏幕.我试过了

foreach (var parentScreen in this.Application.ActiveScreens.OfType<ScreenType>())
{
     //Invoke the refresh
     parentScreen.Details.Dispatcher.BeginInvoke(() => parentScreen.Details.Commands.Refresh.Execute());
}
Run Code Online (Sandbox Code Playgroud)

但它似乎不适用于Beta 2

silverlight visual-studio-lightswitch

4
推荐指数
1
解决办法
6262
查看次数

终止在QThread中运行的正在进行的QProcess?

如何终止在QThread中运行并被另一个QThread删除的正在进行的QProcess?我甚至插入了一个QMutex extCmdProcessLock,它应该在extCmdProcess完成或超时之前避免破坏DbManager.如果另一个线程在DbManager上调用delete,我会在"waitForStarted"上遇到分段错误.我不能使用信号(我认为)因为我在顺序数据处理中使用外部命令.非常感谢您的帮助!

DbManager::extCmd(){
    ...
    QMutexLocker locker(&extCmdProcessLock);
    extCmdProcess = new QProcess(this);
    QString argStr  += " --p1=1"
                    +  " --p2=3";
    extCmdProcess->start(cmd,argStr.split(QString(" ")));
    bool startedSuccessfully = extCmdProcess->waitForStarted();
    if (!startedSuccessfully) {
       extCmdProcess->close();
       extCmdProcess->kill();
       extCmdProcess->waitForFinished();
       delete extCmdProcess;
       extCmdProcess = NULL;
       return;
    }
    bool successfullyFinished = extCmdProcess->waitForFinished(-1);
    if (!successfullyFinished) {
       qDebug() << "finishing failed"; // Appendix C
       extCmdProcess->close();
       extCmdProcess->kill();
       extCmdProcess->waitForFinished(-1);
       delete extCmdProcess;
       extCmdProcess = NULL;
       return;
   }
   extCmdProcess->close();
   delete extCmdProcess;
   extCmdProcess = NULL;
}

DbManager::~DbManager(){
    qDebug() << "DB DbManager destructor called.";   
    QMutexLocker locker(&extCmdProcessLock);
    if (extCmdProcess!= NULL){ …
Run Code Online (Sandbox Code Playgroud)

linux qt multithreading qprocess

1
推荐指数
1
解决办法
3335
查看次数