小编Bud*_*rot的帖子

为什么一个路径即使在"\\"之前包含@也能工作

我有点困惑.我认为c#中的"@"是一个用来解释文字的标志,就像@"C:\ Users ..."一样.它避免了双反斜杠的需要.

但是,如果路径包含双反斜杠和@,为什么路径也可以工作?铁:

var temp = File.ReadAllText(@"C:\\Users\\text.txt").ToString(); // no error
Run Code Online (Sandbox Code Playgroud)

在那种情况下,字符串必须字面上是"C:\\ Users \\ text.txt" - 因为之前的"@" - 这不是一个有效的Windows路径(编辑:这是错误的,它是一个有效的路径,只有资源管理器不接受它 - 感谢Muctadir Dinar),为什么这个有效呢?

提前致谢

c# string

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

WiX获得文化预处理器变量

我有一个像文件夹一样的文件夹

[MyApp]
--[Videos]
  --[de-de]
    -video1.mpg
    - blah blah blah
  --[en-us]
    - video1.mpg
    - blah blah blah
etc etc
Run Code Online (Sandbox Code Playgroud)

要将此视频包含在特定语言的安装程序中,我需要能够访问类似$(var.Culture)(< - didnt exist)的内容.我试图使用语言文件

<WixLocalization Culture="en-us" xmlns="http://schemas.microsoft.com/wix/2006/localization">
  <String Id="Localisation">en-us</String>
</WixLocalization>
Run Code Online (Sandbox Code Playgroud)

但这也是最重要的工作因为它们不是预处理器变量所以我不能在"蜡烛"过程中使用它们.有没有办法将culturecode作为当前构建的msi的预处理器变量?我很抱歉,如果这个问题是微不足道的,但我搜索谷歌,我没有找到一个真正的解决方案.

windows-installer wix wix-extension

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

混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

在应用程序中,由于 AsyncLocal 的错误/意外值,我遇到了奇怪的行为:尽管我抑制了执行上下文的流程,但 AsyncLocal.Value 属性有时不会在新生成的任务的执行范围内重置。

\n

下面我创建了一个最小的可重现示例来演示该问题:

\n
private static readonly AsyncLocal<object> AsyncLocal = new AsyncLocal<object>();\n[TestMethod]\npublic void Test()\n{\n    Trace.WriteLine(System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription);\n    var mainTask = Task.Factory.StartNew(() =>\n        {\n            AsyncLocal.Value = "1";\n            Task anotherTask;\n            using (ExecutionContext.SuppressFlow())\n            {\n                anotherTask = Task.Run(() =>\n                    {\n                        Trace.WriteLine(AsyncLocal.Value); // "1" <- ???\n                        Assert.IsNull(AsyncLocal.Value); // BOOM - FAILS\n                        AsyncLocal.Value = "2";\n                    });\n            }\n\n            Task.WaitAll(anotherTask);\n        });\n\n    mainTask.Wait(500000, CancellationToken.None);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

在十分之九的运行中(在我的电脑上),测试方法的结果是:

\n
.NET 6.0.2\n"1"\n
Run Code Online (Sandbox Code Playgroud)\n

-> 测试失败

\n

正如您所看到的,测试失败,因为在Task.Run之前的值仍然存在于AsyncLocal.Value(Message:)中执行的操作中1

\n

我的具体问题是:

\n
    \n
  1. 为什么会发生这种情况?\n我怀疑 …

c# asynchronous task-parallel-library async-await .net-core

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

使Windows窗体可伸缩的最佳方法?

使WinForms应用程序具有完全可伸缩性的最佳方法是什么(例如,在调整窗体大小时)?

在WPF中,我将使用类似a Viewbox和/或a的方法UniformGrid,但是WinForms中不存在类似的方法。

是否有一种更简单(也许更快)的方法来调整控件的大小,而不是通过计算其新的大小/位置等来调整控件的大小?

提前致谢

c# winforms

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

从另一个表单调用方法

我尝试从另一种形式调用方法.我的尝试:

public partial class newLedPopUp : Form
{
    Form1 back = new Form1();
    back.output();
    Close();
}
Run Code Online (Sandbox Code Playgroud)

public partial class Form1 : Form
{
    newLedPopUp popup = new newLedPopUp();

    public void output()
    {
        button3_Click(null, null);
    }
}
Run Code Online (Sandbox Code Playgroud)

有人能帮助我吗?我真的找不到我的错误,而且我一直在寻找很长一段时间.

c# winforms

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

保持控制始终在最前面

是否可以将控件(Panel)始终保持在所有其他控件上,即使它们也使用Control.BringToFront()

我厌倦了自己使用BringToFront,但是如果此控件下的另一个控件也使用此命令,这似乎会失效.

.net c# z-order winforms

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

如果从cmd执行应用程序,则写入命令行

我搜索了网络和Stackoverflow,我没有找到任何东西.如果这个问题已经存在,我很抱歉.

如果通过cmd调用我的C#应用​​程序,例如:

C:\ System32\MyConsoleApplication -parmOne -paramTwo ...

有没有办法写入cmd(例如给出进度信息?)

编辑:因为我使用Console Console.WriteLine应用程序解决方案ist 它不适合我,因为我的应用程序需要管理员(通过Manifestfile)并使用普通用户权限调用.在这种情况下,UAC要求权限并使用该应用程序打开一个新的Cmd.

c# console cmd

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

在结构中使用字节数组是一个坏主意吗(与使用多个基元类型相比)?

我需要一个恰好有 X 字节的小数据类型。

为了存档这个我基本上有两种方法:

  • 我可以定义一个容量为 X 的 byte[] 数组
  • 我可以组合一些内置数字类型来归档我需要的字节数,fe for X = 12:
    • 我可以使用 3 个整数
    • 我可以使用 1 长和 1 短
    • 我可以使用 12 字节字段
    • 我可以 ...

我已经看到在很多结构中使用了GuidMongoDb 的 ObjectId具体字段,即使它们或多或少只是一个普通的字节数组。

public struct XY
{
    private readonly int _a;
    private readonly int _b;
    private readonly int _c;
}
Run Code Online (Sandbox Code Playgroud)

public struct XY
{
    private readonly byte[] bytes = new byte[12]; // probably set via ctor
}
Run Code Online (Sandbox Code Playgroud)

这是否提供了任何显着的好处(除了可用性之外)?

或者换句话说:在结构中使用字节数组是一个坏主意吗?

c# arrays struct

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