小编Bru*_*pes的帖子

正确的方法来延迟任务的开始

我想安排一个任务以x ms开始,并能够在它开始之前取消它(或者只是在任务开始时).

第一次尝试就像是

var _cancelationTokenSource = new CancellationTokenSource();

var token = _cancelationTokenSource.Token;
Task.Factory.StartNew(() =>
    {
        token.ThrowIfCancellationRequested();
        Thread.Sleep(100);
        token.ThrowIfCancellationRequested();
    }).ContinueWith(t =>
    {
        token.ThrowIfCancellationRequested();
        DoWork();
        token.ThrowIfCancellationRequested();
    }, token);
Run Code Online (Sandbox Code Playgroud)

但我觉得应该有一个更好的方法,因为这会在睡眠中耗尽一个线程,在此期间它可以被取消.

我还有什么其他选择?

.net c# task-parallel-library

53
推荐指数
3
解决办法
4万
查看次数

有没有办法列出psake构建文件中的所有任务?

我有一个带有几个任务的default.ps1文件,其中一些我不经常使用.

而不是打开文件和grep'ing任务,有没有办法在命令行中列出它们?理想情况下附加一些描述(将在任务附近设置).

我正在考虑类似于rake用-t做的事情(见这里例如)

powershell build-process psake

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

如何实现 IAmsiStream 以支持在 Windows 上流上运行恶意软件扫描

当实现IAmsiStream以使用 Windows Defender 执行扫描时,对于大于 ~20MB 的文件,它会失败并显示Value does not fall within the expected range..

这个实现中缺少什么?

    public class AmsiStream : IAmsiStream
    {
        private readonly Stream _input;
        private readonly string _name;
        private static readonly byte[] _nullPtr = new byte[Marshal.SizeOf(IntPtr.Zero)];

        public AmsiStream(Stream input, string name)
        {
            _input = input ?? throw new ArgumentNullException(nameof(input));
            _name = name ?? throw new ArgumentNullException(nameof(name));
        }

        public int GetAttribute(AMSI_ATTRIBUTE attribute, int dataSize, byte[] data, out int retData)
        {
            const int E_NOTIMPL = unchecked((int)0x80004001);
            const int …
Run Code Online (Sandbox Code Playgroud)

c# windows-defender antimalware

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

如何管理存储在SVN中的AssemblyInfo.cs,并随每个构建进行更改

我有以下场景:应用程序是通过IDE和构建脚本构建的.构建脚本用于初始设置(获取依赖项,设置环境),生成二进制文件以及持续集成过程.我希望二进制文件具有AssemblyFileVersion作为构建的月和日,以及修订版的svn修订版.这会导致AssemblyInfo.cs在每个修订版本上更改,这会在源代码管理日志中产生大量噪音.我可以忽略这些文件,但是作为设置的一部分,我需要重新生成这些文件.

我想知道是否有人有任何其他想法,或者你在这种情况下做了什么.

.net msbuild build-process assemblyinfo

5
推荐指数
2
解决办法
4307
查看次数

AngleSharp 的 HtmlParser 线程安全吗?

我可以创建一个private static readonly HtmlParser HtmlParser = new HtmlParser();并在多个线程中安全地使用它吗?

或者我应该为每个线程或每个使用创建一个解析器以避免并发问题?

.net c# html-parsing anglesharp

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

Process.Start("IIS Manager.lnk")失败,"系统找不到指定的文件"

我启动路径C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\IIS Manager.lnk通过Process.Start,但它失败The system cannot find the file specified.

链接显示在a上dir,因此它存在.

可以是权限吗?

笔记:

  • 通过遍历Start Menu目录自动发现该路径.
  • 我可以通过资源管理器和命令行启动它.

澄清:

  • 代码如下:

    public void Execute(){Process.Start(_shortcut.FullName);}

  • _shortcut的类型为FileInfo

  • _shortcut.Exists为true,因此可以找到该文件
  • 用显式路径替换_shortcut.FullName @"C:\ ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\IIS Manager.lnk"具有相同的效果.
  • 这是一个使用Caliburn和MEF的WPF应用程序.
  • 以管理员身份运行具有相同的效果.

另一方面,这似乎工作:

    [Fact]
    public void TestIisManager()
    {
        var path = new FileInfo(@"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\IIS Manager.lnk");
        Process.Start(path.FullName);
    }
Run Code Online (Sandbox Code Playgroud)

它似乎有点"基于环境".

第二个澄清:

  • 它似乎适用于Windows 7 x86,但不适用于Windows 7 x64.

.net c# windows

2
推荐指数
2
解决办法
3290
查看次数