小编Dog*_*ars的帖子

确保长时间运行的任务仅被触发一次,后续请求排队但队列中只有一个条目

我有一个计算密集型方法Calculate可能会运行几秒钟,请求来自多个线程.

Calculate应执行一个,后续请求应排队,直到初始请求完成.如果已经排队了请求,则可以丢弃后续请求(因为排队的请求就足够了)

似乎有很多潜在的解决方案,但我只需要最简单的解决方案.

更新:这是我的基本尝试:

private int _queueStatus;
private readonly object _queueStatusSync = new Object();

public void Calculate()
{
    lock(_queueStatusSync)
    {
        if(_queueStatus == 2) return;
        _queueStatus++;
        if(_queueStatus == 2) return;
    }
    for(;;)
    {
        CalculateImpl();
        lock(_queueStatusSync)
            if(--_queueStatus == 0) return;

    }
}

private void CalculateImpl()
{
    // long running process will take a few seconds...
}
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading asynchronous async-await

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

确定用户是否正在从公司机器访问 Web 应用程序

我正在与一个使用 Office 365 的大型企业客户合作,我们有一个在 azure 中运行的应用程序,如果他们没有从他们的公司机器登录,我们需要阻止某些操作。

原则上,当用户不使用公司管理的笔记本电脑时,我们希望禁用“导出为 Excel”功能。

例如,如果我尝试从我的家用机器登录 OUTLOOK,我会得到下面的图像,我怎样才能为我们的应用程序实现类似的功能?

在此处输入图片说明

office365

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

如何为Arm/Raspberry Pi交叉编译libsndfile

我试图让一个工作交叉编译的Linux(Debian的挤压AMD64)下运行,但我似乎无法给我的文件与已安装的链接libsndfile,我假设我需要交叉编译的源到目标的Raspberry- Pi并链接到该版本.但我似乎无法找到上做简单的说明./configuremake阶段编译为目标.

注意:我按照以下步骤操作:如何构建用于交叉编译的GCC 4.7工具链?使用Eclipse构建交叉编译器.

arm cross-compiling libsndfile raspberry-pi

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

重命名文件夹后无法解决挂起的更改

我在Visual Studio中正确地重命名了一个文件夹(显示为移动)但是在合并到父分支之后,我现在遇到了许多我无法解决的冲突.

它们显示在"解决冲突"窗口中,其中显示"您的待处理更改存在冲突".反对每场冲突.

在此输入图像描述

如果我尝试通过服务器或本地版本来解决它们,它们会消失,但会在几秒钟后重新出现.

我已尝试tf undo * /recursive从父文件夹,但报告"没有待撤消的待更改",我尝试删除整个文件夹和'获取特定版本..'并强制覆盖,但我做的任何事都可以摆脱这些冲突.

tfs visual-studio-2012

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