小编laz*_*azo的帖子

Visual Studio中的TestContext - 它做了什么?

Visual Studio生成的测试类通常具有TestContext属性,如下所示:

private TestContext testContextInstance;

public TestContext TestContext {
    get {
        return testContextInstance;
    }
    set {
        testContextInstance = value;
    }
}

MSDN对此有何评论并不是特别有用,让我无处可去.TestContext到目前为止,我还没有找到任何使用示例,如阅读和写入.在MSDN页面中,我了解您将DataContext设置为Web服务的路径或访问数据库.但是,如果我试图单独测试一个不使用数据库的独立桌面应用程序呢?我可以使用什么TestContext

请有人能够为我打破这个吗?(我正在使用VS2010).

.net c# tdd unit-testing visual-studio

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

如何从文件属性中获取详细信息?

可能重复:
读/写'扩展'文件属性(C#)

有谁知道如何获取文件属性窗口的详细信息选项卡中包含的信息?我忽视的任何.NET库?

这是我正在谈论的窗口/信息:

替代文字

似乎有更好的方法来访问这些数据,而不是必须使用各种方法来提取各种文件类型的元数据,因为在此选项卡下可用的信息类别肯定存在一些重叠,即使对于不同的文件类型也是如此.但是我尽可能地搜索,但我没有遇到任何想要为任何(或许多)文件类型执行此操作的人 - 尽管有很多关于抓取特定文件类型的元数据的讨论.

任何你可能有的建议都是最受欢迎的:)

c# windows filesystems

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

甚至在UI线程上执行时的跨线程操作

我有一个函数,它向父控件添加一个控件,该控件从与创建控件的线程不同的线程调用.这是怎么回事:

1        delegate void AddControlToParentDelegate(Control child, Control parent);
2        private void addControlToParent(Control child, Control parent) {
3        if (parent.InvokeRequired) {
4            AddControlToParentDelegate d = new  AddControlToParentDelegate(addControlToParent);
5            this.Invoke(d, new object[] { child, parent });
6            } else {
7                parent.Controls.Add(child);
8            }
9        }
10    }
Run Code Online (Sandbox Code Playgroud)

这既可以正常工作,也parent.InvokeRequired可以正常child.InvokeRequired.然后,一旦执行第5行(现在d调用委托并且该函数应该在UI线程上运行.(对吗?))child第7行引发跨线程操作无效异常.为什么是这样?它已经在它创建的线程上运行了吗?

我设法通过添加额外的(child.InvokeRequired)检查来解决这个问题:

delegate void AddControlToParentDelegate(Control child, Control parent);
private void addControlToParent(Control child, Control parent) {
    if (parent.InvokeRequired) {
        AddControlToParentDelegate d = new AddControlToParentDelegate(addControlToParent);
        this.Invoke(d, …
Run Code Online (Sandbox Code Playgroud)

c# multithreading invoke winforms

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