相关疑难解决方法(0)

将当前线程置于休眠状态

我有一个工作单元,我在一个线程(不是主线程).在某些情况下,我想让这个线程睡10秒钟.Thread.Sleep(10000)是最有效的方法吗?

c# multithreading

13
推荐指数
3
解决办法
6万
查看次数

如何对锁定语句进行单元测试?

我如何编写单元测试以确保获得锁定?

例如:

public void AddItem(object item)
{
    lock (_list)
    {
        _list.Add(item)
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法确保lock语句运行?

编辑:我不是要试图证明线程安全(我会假设),只是调用了lock()语句.

例如,我可以new object()通过在CreateObject()工厂函数中替换它来测试语句.

c# unit-testing locking

8
推荐指数
2
解决办法
6713
查看次数

如何在C#.Net 4.0中重启线程?

我在VS 2010中使用C#.Net4.0.如何重新启动Thread

它就像我想要Abort()的线程和Start()它从一开始?可能吗?

c# multithreading .net-4.0

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

锁定和管理锁定异常的解决方案有什么问题?

我的目标是在我的应用程序中使用线程安全功能和异常处理的约定.我对线程管理/多线程的概念比较陌生.我在用.NET 3.5

我写了下面的辅助方法看完这篇文章后总结我的所有锁定动作http://blogs.msdn.com/b/ericlippert/archive/2009/03/06/locks-and-exceptions-do-not-mix. aspx,它是针对这个问题而链接的,Monitor vs lock.

我的想法是,如果我在我的应用程序中一致地使用此约定,那么编写线程安全代码并在线程安全代码中处理错误将更容易,而不会破坏状态.

public static class Locking
{

    private static readonly Dictionary<object,bool> CorruptionStateDictionary = new Dictionary<object, bool>(); 
    private static readonly object CorruptionLock = new object();

    public static bool TryLockedAction(object lockObject, Action action, out Exception exception)
    {
        if (IsCorrupt(lockObject))
        {
            exception = new LockingException("Cannot execute locked action on a corrupt object.");
            return false;
        }
        exception = null;
        Monitor.Enter(lockObject);
        try
        {
            action.Invoke();
        }
        catch (Exception ex)
        {
            exception = ex;
        }
        finally
        { …
Run Code Online (Sandbox Code Playgroud)

c# multithreading locking thread-safety .net-3.5

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