草庐IT

安全$容器

全部标签

c# - 如何以线程安全的方式访问 C# WPF 控件?

为此,我尝试使用MSDN中的示例,但它们似乎只适用于Windows窗体。例如,使用.InvokeRequired的方法依赖于Windows窗体控件,但是此方法不适用于WPF控件。Backgoundworker方法也会抛出InvalidOperationException-Thecallingthreadcannotaccessthisobjectbecauseadifferentthreadownsit.那么如何在WPF上下文中完成呢? 最佳答案 您只想使用Dispatcher.Invoke方法(或异步等效Dispatcher.Be

c# - ADO.NET:为所有 VarChar 参数的 SqlParameter.Size 指定 -1 安全吗?

我们有一个现有的C#代码主体,可以在许多地方调用参数化的即席SQLServer查询。我们从不指定SqlParameter.Size,它记录了在这种情况下,SqlParameter类从参数值推断大小。我们最近才意识到由此产生的SQLServer计划缓存污染问题,其中为每个不同的参数大小组合缓存了一个单独的计划。幸运的是,每当我们创建一个SqlParameter时,我们都是通过一个实用方法来完成的,因此我们有机会向该方法添加几行代码并解决这个问题。我们正在考虑添加以下内容:if((sqlDbType==SqlDbType.VarChar)||(sqlDbType==SqlDbType.NV

c# - WPF 容器将所有子控件变为只读

我想要一个WPF容器(面板、用户控件等),它公开一个属性以将所有子级设置为只读(如果已设置)。这应该很像将父控件设置为IsEnabled=false,这也会禁用所有子控件。应考虑哪些子项及其哪些属性是固定的(例如TextBox.ReadOnly、DataGrid.ReadOnly...)。我曾尝试创建这样一个控件,它基本上(递归地)迭代可视化树的所有子项并相应地处理控件。除了进一步更改会影响可视化树的情况外,这工作正常,以便添加新的子项。这适用于ContentControl或ItemsControl。如果在我遍历它们之后将子项添加到可视化树中,它们显然不是只读的。我一直在努力寻找一个好

c# - 内联创建和使用一次性对象是否安全?

我已经多次看到开发人员使用内联一次性对象,here例如。内联我的意思是:varresult=newDataTable().Compute("1+4*7",null);我知道Dispose方法不会被调用,但由于没有引用对象,垃圾收集器将如何处理它?使用这样的一次性元素安全吗?我在示例中使用了DataTable,因为它是我找到的唯一具体示例,但我的问题通常适用于一次性对象。我个人并没有那样使用它们,我只是想知道如果以这种方式使用它们,GC是否会对其进行不同的处理。 最佳答案 这里的关键问题是调用Dispose的时间,这在您的示例中是未知

c# - 是否可以在每个用户的基础上设置 ASP.NET Owin 安全 cookie 的 ExpireTimeSpan?

我们有一个使用Owincookie身份验证的ASP.NETMVC5应用程序。目前,我们设置cookie认证如下:publicpartialclassStartup{publicvoidConfigureAuth(IAppBuilderapp){vartimeoutInMinutes=int.Parse(ConfigurationManager.AppSettings["cookie.timeout-minutes"]);app.UseCookieAuthentication(newCookieAuthenticationOptions{AuthenticationType=Defaul

c# - 我如何在类型安全的枚举模式上使用 switch 语句

我以不同的方式找到了一个关于实现枚举的漂亮示例。我认为这就是所谓的类型安全枚举模式。我开始使用它,但我意识到我不能在switch语句中使用它。我的实现如下所示:publicsealedclassMyState{privatereadonlystringm_Name;privatereadonlyintm_Value;publicstaticreadonlyMyStatePASSED=newMyState(1,"OK");publicstaticreadonlyMyStateFAILED=newMyState(2,"ERROR");privateMyState(intvalue,stri

c# - 创建自定义 winforms 容器

我想在winforms中创建一个与容器控件具有相同行为的控件。我的意思是:在设计模式下,当我将控件放入其中时,它就会分组,就像分组框一样。我正在创建的这个控件包含一些其他控件和一个GroupBox。我只需要:当在设计模式下将控件拖放到我的自定义控件上时,我将把它放在嵌套的GroupBox中。但我不知道如何让我的控件在设计模式下响应那种Action。 最佳答案 也许this是你需要的,我前段时间在CodeProject上找到了它:DesigningNestedControls:Thisarticledemonstrateshowtoa

c# - 在 C# 中实现安全的鸭子类型(duck typing)

看了之后如何Go处理接口(interface)并喜欢它,我开始考虑如何在C#中实现类似的duck-typing,如下所示:varmallard=newMallard();//doesn'timplementIDuckbuthastherightmethodsIDuckduck=DuckTyper.Adapt(mallard);DuckTyper.Adapt方法将使用System.Reflection.Emit动态构建适配器。也许有人已经写过这样的东西。我想这与模拟框架已经做的并没有太大不同。但是,如果Mallard实际上没有正确的IDuck方法,这将在运行时抛出异常。为了在编译时尽早发

c# - 如何安全地混契约(Contract)步和异步代码?

这个问题在这里已经有了答案:Writeawelldesignedasync/non-asyncAPI(3个答案)关闭2年前。我有这个完全同步的库。它公开了同步方法,我有客户在使用它。我将底层实现更改为异步,并为任何想要使用它的人公开了异步方法。但是现在我有很多重复的代码。异步代码似乎表现更好。我希望现有客户能够利用它,并且我希望消除代码重复。是否有任何安全的方法来保持同步签名并调用异步实现?我特别害怕在调用.Result和.Wait时出现死锁。

c# - 用户控件在设计时作为容器

我正在设计一个简单的扩展器控件。我从UserControl派生,绘制内部控件,构建,运行;一切都好。由于内部控件是面板,我想在设计时将其用作容器。事实上,我已经使用了这些属性:[Designer(typeof(ExpanderControlDesigner))][Designer("System.Windows.Forms.Design.ParentControlDesigner,System.Design",typeof(IDesigner))]我说的太好了。但它不是...结果是我可以在设计时将它用作容器但是:添加的控件返回已经嵌入到用户控件中的内部控件即使我将在设计时添加的控件推到