小编Tar*_*Tar的帖子

我的Visual Studio Installer项目中的所有属性在哪里?

在Visual Studio安装项目,有占位符\宏属性,如[ProgramFilesFolder][ProductName].我在哪里可以看到所有这些属性及其价值?我下载了Orca,但我无法从中找到这些信息.

deployment windows-installer visual-studio-2010

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

需要澄清Thread.MemoryBarrier()

可能重复:
为什么我们需要Thread.MemoryBarrier()?

来自O'Reilly的C#in a Nutshell:

class Foo
{
    int _answer;
    bool _complete;
    void A()
    {
        _answer = 123;
        Thread.MemoryBarrier(); // Barrier 1
        _complete = true;
        Thread.MemoryBarrier(); // Barrier 2
    }
    void B()
    {
        Thread.MemoryBarrier(); // Barrier 3
        if (_complete)
        {
            Thread.MemoryBarrier(); // Barrier 4
            Console.WriteLine (_answer);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

假设方法A和B在不同的线程上并发运行:


作者说:"障碍1和4阻止这个例子写"0".障碍2和3提供了新鲜度保证:他们确保如果B在A之后运行,则读取_complete将评估为真.

我的问题是:

  1. 为什么需要Barrier 4?障碍1还不够?
  2. 为什么需要2和3?
  3. 根据我的理解,屏障阻止在按照以下说明进行操作之前执行指令,我是否正确?

c# multithreading memory-barriers

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

如何将ref/out函数指针传递给函数?

我想实例化一个函数指针:

static void GetProc (out function f) {
    auto full = demangle(f.mangleof);
    auto name = full[full.lastIndexOf('.')+1..$];

    f = cast(typeof(f)) GetProcAddress(hModule,name.toStringz);
}
Run Code Online (Sandbox Code Playgroud)

但编译器不会让我使用函数类型变量(out function f).我试过用Object但显然function不是Object(怎么回事?).那么,我如何传递functionas ref/ outvariable(不使用template/ mixin,它会掩盖代码并迫使我添加许多typeof语句......)?

d dmd

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

为什么在单元测试中创建关闭窗口会引发InvalidComObjectException?

当使用MSTest进行单元测试时,我创建了一个WPF窗口.此窗口关闭时,Visual Studio显示InvalidComObjectException:

COM object that has been separated from its underlying RCW cannot be used.
Run Code Online (Sandbox Code Playgroud)

它在退出引发[TestMethod],并且堆栈仅包含外部代码(否InnerException).这就是我所拥有的:

StackTrace:
       at System.Windows.Input.TextServicesContext.StopTransitoryExtension()
       at System.Windows.Input.TextServicesContext.Uninitialize(Boolean appDomainShutdown)
       at System.Windows.Input.TextServicesContext.TextServicesContextShutDownListener.OnShutDown(Object target, Object sender, EventArgs e)
       at MS.Internal.ShutDownListener.HandleShutDown(Object sender, EventArgs e)

DeclaringType:
    {Name = "TextServicesContext" FullName = "System.Windows.Input.TextServicesContext"}

    Assembly:
        {PresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35}
Run Code Online (Sandbox Code Playgroud)

这是创建窗口的代码:

var myWindow = new SomeWindow(errors);
myWindow.ShowDialog();
Run Code Online (Sandbox Code Playgroud)

该窗口包含两个ListViews,其中包含一些文本元素和复选框

c# wpf unit-testing exception dispatcher

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

JTable的JComboBox单元格编辑器在打开列表时已经设置了值,即使在组合框外单击也是如此

JTableJComboBox细胞编辑器中打开列表时,即使点击了组合框外已设置的值.此外,一旦选择了某个值,下次打开选择时,该值将成为默认值:

在此输入图像描述

这是代码:

public class Main {
    public static void main(String[] args) {
        new QuestionFrame();
    }
}
Run Code Online (Sandbox Code Playgroud)

QuestionFrame:

import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import java.awt.*;

class QuestionFrame extends JFrame {
    QuestionFrame(){
        class Model {
            int num;
            private Model(int n) { num = n; }
        }
        final Model[] model = {new Model(9), new Model(8), new Model(7)};

        JPanel panel = new JPanel(new BorderLayout());
        JTable table = new JTable(new AbstractTableModel(){
            @Override public int getRowCount() { return model.length; }
            @Override public int …
Run Code Online (Sandbox Code Playgroud)

java swing jtable

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

如何轻松地从 PSCustomObject 中提取第一个/最后一个元素(最好没有 foreach)?

我有这个 JSON:

'{
    "fibo": {
        "2": { "hi": "there" },
        "8": { "and": "you?" }
        "5": { "well": "doing fine" },        
        "3": { "what": "is hap?" },
    }
}'
Run Code Online (Sandbox Code Playgroud)

例如,我想以{ "what": "is hap?" }最简单的方式提取最后一个元素(对象)(最好是带管道的单行,而不用foreach-ing 它)。

我试过:

'{
    "fibo": {
        "2": { "hi": "there" },
        "8": { "and": "you?" }
        "5": { "well": "doing fine" },        
        "3": { "what": "is hap?" },
    }
}' | ConvertFrom-Json | select { $_.fibo } | select -Last 1
Run Code Online (Sandbox Code Playgroud)

select …

powershell

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

如何仅模拟 ILogger<T> 一次,而不需要为每个通用 T 实现创建新的模拟?

长话短说:

由于使用Moq不可能模拟开放泛型类型,因此创建实际的模拟是不可避免的。这是我最终使用的最小模拟:

internal interface ILoggerMock {
    public List<(LogLevel logLevel, string msg)> Logs { get; }
}

public class LoggerMock<T> : ILoggerMock, ILogger<T> {
    public List<(LogLevel logLevel, string msg)> Logs { get; } = new();
    public IDisposable BeginScope<TState>(TState state) => throw new NotImplementedException();
    public bool IsEnabled(LogLevel logLevel) => throw new NotImplementedException();
    public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter) {
        var formattedLogMessage = formatter(state, exception);
        Logs.Add((logLevel, formattedLogMessage));
    }
}
Run Code Online (Sandbox Code Playgroud)

通过此注册:

var myServiceProvider = new …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection moq mocking inversion-of-control

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

如何设置CloudFront分配描述?

Terraform 的文档没有提及任何Description字段。谷歌搜索都不是(这首先是有问题的,因为这Description是超级常见的词)。

我尝试添加Description Tag,但它没有显示在CloudFront > 发行版页面Description的列中

amazon-web-services amazon-cloudfront terraform

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

"bcdedit/dbgsettings NET HOSTIP:123.123.123.123 PORT:50123"无效

要使用LAN启用内核调试(我使用适当的LAN板),根据MSDN,我应该键入:

bcdedit /dbgsettings NET HOSTIP:123.123.123.123 PORT:50123
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

The debugger type specified is not valid.
...
Run Code Online (Sandbox Code Playgroud)

怎么来的(Win7x64)?

windows kernel driver device-driver

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

有没有一种方法可以将枚举类隐式转换为std :: byte?

我有以下功能:

uint_fast32_t write(const std::vector<std::byte>& bytes_to_write) const
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想用可变数量std::bytes 来称呼它:

std::byte low_byte { 0 };
std::byte hi_byte{ GPIO_PINS::GPIOH0 | GPIO_PINS::GPIOH3 };

write({
    INST::SET_LOW,
    low_byte,
    0xFB,
    INST::SET_HI,
    hi_byte,
    0xFF
    });
Run Code Online (Sandbox Code Playgroud)

INSTGPIO_PINSenum class : byte-介意的区别byte(实际上unsigned char),并std::byte在这方面。)

但这不会编译。我必须按以下方式调整通话:

write({
    std::byte(INST::SET_LOW),
    low_byte,
    std::byte(0xFB),
    std::byte(INST::SET_HI),
    hi_byte,
    std::byte(0xFF)
    });
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否有一种方法可以消除对std::byte构造函数(或static_cast)的需求?

也许一些隐式操作符重载或类似?

c++ c++17

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