小编chi*_*emp的帖子

实现C#通用超时

我正在寻找实现通用方法的好主意,让一行(或匿名委托)代码执行超时.

TemperamentalClass tc = new TemperamentalClass();
tc.DoSomething();  // normally runs in 30 sec.  Want to error at 1 min
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个可以在我的代码与气质代码交互的许多地方(我无法改变)优雅地实现的解决方案.

另外,如果可能的话,我想让违规的"超时"代码停止执行.

c# multithreading asynchronous timeout c#-3.0

157
推荐指数
6
解决办法
7万
查看次数

如何获得活动屏幕尺寸?

我正在寻找的是相当于System.Windows.SystemParameters.WorkArea窗口当前所在的监视器.

澄清: 有问题的窗口WPF不是WinForm.

c# wpf

132
推荐指数
7
解决办法
20万
查看次数

Bash脚本用于接收和重新引用引用的参数

我正在尝试获取bash脚本的引用参数,以便安全地通过嵌套脚本接收.有任何想法吗?

test.sh

#!/bin/bash
echo $*
bash myecho.sh $*
Run Code Online (Sandbox Code Playgroud)

myecho.sh

#!/bin/bash
 echo $1
 echo $2
 echo $3
 echo $4
Run Code Online (Sandbox Code Playgroud)

样品:

bash test.sh aaa bbb '"ccc ddd"'
Run Code Online (Sandbox Code Playgroud)

结果:

aaa bbb "ccc ddd"
aaa
bbb
"ccc
ddd"
Run Code Online (Sandbox Code Playgroud)

想要结果

aaa bbb "ccc ddd"
aaa
bbb
ccc ddd
Run Code Online (Sandbox Code Playgroud)

unix bash

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

在词典和集合上自动添加索引器是一个很好的设计决策吗?

索引器何时可以自动将项添加到集合/字典中?这是合理的,还是违背了最佳做法?

public class I { /* snip */  }
public class D : Dictionary<string, I>
{
    public I this[string name]
    {
        get
        {
            I item;
            if (!this.TryGetValue(name, out item))
            {
                item = new I();
                this.Add(name, item);
            }
            return item;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何在集合中使用它的示例:

public class I
{
    public I(string name) {/* snip */}
    public string Name { get; private set; }
    /* snip */
}
public class C : Collection<I>
{
    private Dictionary<string, I> nameIndex = new Dictionary<string, I>();

    public …
Run Code Online (Sandbox Code Playgroud)

c# indexing collections dictionary

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

如何从WCF操作合同中检索客户端的计算机名称?

我目前正在查看OperationContect.Current属性.是否有(嵌套)属性将始终返回客户端的机器名称?我目前正在使用net.tcp绑定,但希望将来支持其他绑定.

使用.NET 3.5 SP1

c# wcf operationcontext

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

如何通过WCF实现继承的Dictionary

我正在尝试实现一个用于WCF的字典.我的要求是:

  • 实际(私有变量或基类)类型等同于Dictionary
  • Comparer = System.StringComparer.InvariantCultureIgnoreCase
  • 自定义(覆盖/新)添加(键,值)方法(包括验证).
  • 覆盖ToString()
  • 在客户端和主机上使用相同类型

我试图在WCF主机和客户端项目共享的公共项目中使用此类:

[Serializable]
public class MyDictionary : Dictionary<string, object>
{
  public MyDictionary()
    : base(System.StringComparer.InvariantCultureIgnoreCase)
  { }

  public new void Add(string key, object value)
  { /* blah */ }

  public override string ToString()
  { /* blah */ }
}

[DataContract]
[KnownType(typeof(MyDictionary))]
[KnownType(typeof(object[]))]
[KnownType(typeof(double[]))]
[KnownType(typeof(string[]))]
[KnownType(typeof(DateTime[]))]
public class ResultClass
{
  public object Value{ get; set; }
  /* More properties */
}
public class ParmData
{
  public object Value{ get; set; }
  /* More properties */ …
Run Code Online (Sandbox Code Playgroud)

c# wcf c#-3.0

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

收听ObservableCollection <INotifyPropertyChanged>中任何项的PropertyChanged事件

我为ObservableCollection创建了一个包装器集合,它订阅每个PropertyChanged事件并将其重新抛出为自己的事件ItemPropertyChanged.我使用与我在此描述的方法类似的方法做到了这一点.有没有更好的办法?我错过了另一个已经有这种行为的.NET集合吗?

c# observablecollection inotifypropertychanged

7
推荐指数
1
解决办法
8990
查看次数

如何创建自动滚动FlowDocumentScrollViewer的附加行为

我的目标是为FlowDocumentScrollViewer创建可重用的附加行为,以便每当FlowDocument更新(附加)时,查看器自动滚动到末尾.

到目前为止的问题

  • 在可视树完成之前调用OnEnabledChanged,因此找不到ScrollViewer
  • 我不知道如何附加到包含FlowDocument的DependencyProperty.我的计划是使用它的已更改事件来初始化ManagedRange属性.(如果需要,第一次手动触发.)
  • 我不知道如何从range_Changed方法中获取ScrollViewer属性,因为它没有DependencyObject.

我意识到那些可能是3个独立的问题(也就是问题).但是它们彼此依赖,并且我尝试了这种行为的整体设计.我问这是一个单一的问题,以防我以错误的方式解决这个问题.如果我是,那么正确的方法是什么?

/// Attached Dependency Properties not shown here:
///   bool Enabled
///   DependencyProperty DocumentProperty
///   TextRange MonitoredRange
///   ScrollViewer ScrollViewer

public static void OnEnabledChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    if (d == null || System.ComponentModel.DesignerProperties.GetIsInDesignMode(d))
        return;

    DependencyProperty documentProperty = null;
    ScrollViewer scrollViewer = null;

    if (e.NewValue is bool && (bool)e.NewValue)
    {
        // Using reflection so that this will work with similar types.
        FieldInfo documentFieldInfo = d.GetType().GetFields().FirstOrDefault((m) => m.Name == "DocumentProperty");
        documentProperty = documentFieldInfo.GetValue(d) as DependencyProperty;

        // …
Run Code Online (Sandbox Code Playgroud)

c# wpf attachedbehaviors c#-4.0

6
推荐指数
1
解决办法
1230
查看次数

如何枚举当前正在执行的所有WCF操作?

我想获取/创建所有当前正在执行的操作的集合并选择元数据(可从OperationContext获得).

wcf .net-4.0

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

使用委托来简化函数调用

我有一个布尔函数,用于许多其他函数的决策.并且每次都向用户提供消息框或允许其继续,具体取决于该函数的返回值.所以我的伪代码可能如下所示:

private bool IsConsented()
{
    //some business logic
}

private void NotReal()
{
    if (IsConsented())
    {
        //call function A
    }
    else
    {
        MessageBox.Show("Need consent first.");
    }
}

private void NotReal2()
{
    if (IsConsented())
    {
        //call function B
    }
    else
    {
        MessageBox.Show("Need consent first.");
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种更简单的方法,而不是将if-else逻辑硬编码到我的每个函数中.我希望能够有这样的功能:

private void CheckConsent(function FunctionPointer)
        {
            if (IsConsented())
            {
                //call the function
                FunctionPointer();
            }
            else
            {
                MessageBox.Show("Need consent first.");
            }
        }
Run Code Online (Sandbox Code Playgroud)

这样我就可以将指针传递给函数.我真的怀疑这与委托有关,但我不知道语法,我不明白如何使用委托传递参数.

c#

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