小编ElG*_*cho的帖子

多线程代码使Rhino Mocks导致死锁

我们目前在单元测试期间遇到一些问题.我们的类使用Rhino Mocks对Mocked对象进行多线程调用.这是一个减少到最小的例子:

public class Bar
{
    private readonly List<IFoo> _fooList;

    public Bar(List<IFoo> fooList)
    {
        _fooList = fooList;
    }

    public void Start()
    {
        var allTasks = new List<Task>();
        foreach (var foo in _fooList)
            allTasks.Add(Task.Factory.StartNew(() => foo.DoSomething()));

        Task.WaitAll(allTasks.ToArray());
    }
}
Run Code Online (Sandbox Code Playgroud)

接口IFoo定义为:

public interface IFoo
{
    void DoSomething();
    event EventHandler myEvent;
}
Run Code Online (Sandbox Code Playgroud)

为了重现死锁,我们的unittest执行以下操作:1.创建一些IFoo Mocks 2.在调用DoSomething()时提升myEvent.

[TestMethod]
    public void Foo_RaiseBar()
    {
        var fooList = GenerateFooList(50);

        var target = new Bar(fooList);
        target.Start();
    }

    private List<IFoo> GenerateFooList(int max)
    {
        var mocks = new MockRepository();
        var fooList …
Run Code Online (Sandbox Code Playgroud)

c# multithreading unit-testing deadlock rhino-mocks

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

如何在TFS中取消搁置旧的Shelvesets时获得正确的版本?

我只是想取消搁置几天前添加的货架.与此同时,其他人已经成功检查了shelveset中包含的新版本文件.由于我的文件在最新版本和shelveset之间存在冲突(因为它有另一个基本变更集),我想将我的代码库恢复为shelveset使用的这个特定版本.

我现在如何确定搁置集的哪个基本版本已被使用?不幸的是,在"细节"中没有关于此的信息 - 搁置的信息.

tfs unshelve changeset

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