jjzjj

c# - 获取和设置简单的静态属性线程安全吗?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:AreC#auto-implementedstaticpropertiesthread-safe?在下面的示例类中staticclassShared{publicstaticstring[]Values{get;set;}}许多读取器线程定期读取Values字符串数组,而有时单个写入器会使用setter将整个数组替换为新值。我需要使用ReaderWriterLock还是C#会自动处理?编辑:在我的例子中,唯一需要的“线程安全”是:当读者正在搜索一个值时,当作者替换数组时,不会发生任何不好的事情。我不在乎读者是

c# - 是在C#中的不同线程之间共享的静态类

我需要在不超出边界的情况下在线程之间共享一个值。静态变量可以做到这一点吗? 最佳答案 静态变量在AppDomain中的多个线程之间共享。所有线程都将看到静态变量的同一个实例并对其进行操作。因此,如果您使用的是静态变量,您可能希望使用某种形式的同步来保护对该变量的访问。如果你想要一个线程局部变量,ThreadLocal类使这很容易。它提供了一种生成和使用每个线程唯一数据的方法。 关于c#-是在C#中的不同线程之间共享的静态类,我们在StackOverflow上找到一个类似的问题:

c# - 使用派生类型调用扩展方法重载

简化后,我有这2个Extension方法:publicstaticclassExtensions{publicstaticstringGetString(thisExceptione){return"Standard!!!";}publicstaticstringGetString(thisTimeoutExceptione){return"TimeOut!!!";}}这是我使用它们的地方:try{thrownewTimeoutException();}catch(Exceptione){Typet=e.GetType();//AtdebuggingthisaTimeoutExcept

c# - 整个程序集的静态构造函数

我的程序集中有许多入口点,我希望在运行此程序集中的任何其他代码之前,每个AppDomain执行一次一些初始化代码。最好的方法是什么?我看到的一个解决方案是拥有一个带有静态构造函数的类,并继承我从中获得的每个入口点。像这样:publicclassInitializer{staticInitializer(){EnsureInitialized();//Callsinitializationcodeonceandonlyonce}}publicclassEntryPointOne:Initializer,IEntryPoint{//Somecodehere}publicclassEntry

c# - 扩展方法与静态方法优先级

考虑以下程序:classA{publicstaticvoidFoo(){}}staticclassExt{publicstaticvoidFoo(thisAa){}}classProgram{staticvoidMain(string[]args){vara=newA();a.Foo();}}编译失败,错误:Member'Test.A.Foo()'cannotbeaccessedwithaninstancereference;qualifyitwithatypenameinstead为什么编译器会忽略扩展方法? 最佳答案 不允许您尝

c# - 如何拦截所有键盘事件并防止在 WinForms 应用程序中失去焦点?

我的一个friend是盲人,我想开发一个程序,让他在盲打法和听觉反馈的帮助下使用PC。如果我的应用程序一启动就可以强制完全控制整个键盘输入,那么体验会更加丰富(针对特定功能使用更多键)和完美无瑕(比如防止偶尔失去焦点)(我会把它放在在为他启动)。我是一名WinFormsC#.NET开发人员,所以我想在使用这个特定框架和语言的应用程序中实现它(尽管不要介意包装的WinAPI调用)。PS:我不介意系统控制Ctrl+Alt+Del组合,但我想控制所有其他键和组合,包括WindowsLogo和标准应用程序启动器按钮。 最佳答案 您可以使用低

c# - 具有循环依赖的静态字段的反射 GetValue 返回 null

注意:以下代码实际上工作正常,但显示了我自己的解决方案中失败的场景。有关详细信息,请参阅本文底部。有了这些类:publicclassMainType{publicstaticreadonlyMainTypeOne=newMainType();publicstaticreadonlyMainTypeTwo=SubType.Two;}publicsealedclassSubType:MainType{publicnewstaticreadonlySubTypeTwo=newSubType();}获取字段One和Two:ListfieldInfos=typeof(MainType).GetF

c# - 如何访问泛型类型的静态方法

publicclassBusinessObjectswhereO:BusinessObject{voidSomeMethod(){vars=O.MyStaticMethod();//是否有正确的面向对象方法来完成此操作,或者我是否需要诉诸反射?编辑:对于这个问题,我试图过分简化这个问题,但遗漏了一个重要的观点。MyStaticMethod使用反射并需要派生类型来返回正确的结果。然而,我刚刚意识到我的设计中的另一个缺陷,即我不能拥有静态虚拟方法,我认为这就是我所需要的。看来我需要找到另一种方法来解决这个问题。 最佳答案 您不能通过泛型

c# - 在 C# 中从麦克风获取数据

我正在尝试使用C#从麦克风(或线路输入)录制音频数据,然后再次重放。关于我如何实现这一点有什么建议吗? 最佳答案 参见ConsoleandmultithreadedrecordingandplaybackclassProgram{staticvoidMain(string[]args){rex.Data+=newRecorderEx.DataEventHandler(rex_Data);rex.Open+=newEventHandler(rex_Open);rex.Close+=newEventHandler(rex_Close);

c# - 静态构造函数可以在非静态构造函数之后运行。这是编译器错误吗?

以下程序的输出是:Non-StaticStaticNon-Static这是编译器错误吗?我预计:StaticNon-StaticNon-Static因为我认为静态构造函数总是在非静态构造函数之前被调用。我使用.net3.5和.net4.0通过VisualStudio2010对此进行了测试。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceStaticConstructorBug{classProgram{staticvoidMain(string[]args){v