小编Wib*_*ble的帖子

如何从Visual Studio 2010 C#项目/解决方案中删除TFS连接?

我已经获得了在本地工作的完整源代码(C#.NET/XAML/Visual Studio 2010),但我无法访问TFS.

每次我打开解决方案时,它总是要求我每次都必须取消的TFS,但现在代码现在从本地开始开发,我将无法访问.

如何从此版本中有效地"断开"TFS?

tfs project solution visual-studio-2010

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

如何使用委托在线程包装器类中传递方法?

我现在正在自学C#并且我在编程方面有点新意,所以如果在另一个主题(我试过搜索)中有所涉及,请提前道歉.

我一直在尝试创建一个泛型工作者/线程类,它接受一个专门包含一长串程序步骤的方法.我们的想法是能够以类似于在Visual Studio中设置断点以暂停/取消暂停的方式暂停/恢复它.为了提供上下文,我主要使用ASP.NET和XAML WPF接口(目前是XAML)进行自动化.

我的理解是我需要使用某种代表,但我正在寻找一个简单的英语简单示例.我发现的示例是完全不同的范围,我很难跟踪其他环境中提供的解决方案.

从MSDN和Stackoverflow上的其他示例来看,"Task"工作类是我到目前为止所做的,但是我对DoDelegatedMethod和我的构造函数的位置有点不知所措.我在这里要做的是实例化一个Task对象,在新实例化上传递一个委托方法,创建一个新线程,并将传入的方法结合到该线程.

我之所以想要一般的"任务",是因为我可以一般地管理特定的方法,而不必为每个实例编写不同的"DoWork"方法.

这是正确的方法吗?

class Task
{
    private ManualResetEvent _shutdownFlag = new ManualResetEvent(false);
    private ManualResetEvent _pauseFlag = new ManualResetEvent(true);
    private delegate void MyDelegate();

    Thread _thread;

    public Task() { }

    public Task(MyDelegate d = new MyDelegate(DoStuff)) // ERROR
    {
        _thread = new Thread(DoDelegatedMethod); // ERROR
    }

    public void Start()
    {
        _thread.Start();
    }

    public void Resume()
    {
        _pauseFlag.Set(); ;
    }

    public void Stop()
    {
        _shutdownFlag.Set();
        _pauseFlag.Set();
        _thread.Join();
    }

    private void DoDelegatedMethod(MyDelegate d)
    {
        do
        {
            d();
        }
        while …
Run Code Online (Sandbox Code Playgroud)

c# multithreading delegates wrapper

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

是否可以包装特定的类或方法并将它们分配给一个线程?

我有一个XAML表单,我希望从主XAML执行线程中穿出两个独立的功能:1.)一个计时器控件,它会勾选,以及2.)实现一个暂停按钮,这样我就可以冻结一组程序性的活动再次单击暂停按钮将恢复.

当我启动表单时,整个应用程序冻结.因此,我无法与btnPause控件进行交互.我让计时器类工作,但它(lblTimer)以块的形式更新,或者当它看起来CPU在主线程上不忙时.

我试图创建一个类"任务",它在自己的线程中包装一个类或方法,以便我可以控制.

    Automation.Task AutomationThread = new Automation.Task();
    Automation.Task TimerThread = new Automation.Task();
Run Code Online (Sandbox Code Playgroud)

后来,我尝试创建一个秒表类并为其分配TimerThread,以便我可以独立管理它.

    Automation.WatchTimer stopwatch = new Automation.WatchTimer(lblTimer, TimerThread);


class Task
{
    private ManualResetEvent _shutdownFlag = new ManualResetEvent(false);
    private ManualResetEvent _pauseFlag = new ManualResetEvent(true);

    Thread _thread;

    public Task() { }

    public void Start()
    {
        _thread = new Thread(DoWork);
        _thread.Start();
    }

    public void Resume()
    {
        _pauseFlag.Set();
    }

    public void Stop()
    {
        _shutdownFlag.Set();
        _pauseFlag.Set();
        _thread.Join();
    }

    public void DoWork()
    {
        do
        {
            _pauseFlag.WaitOne(Timeout.Infinite);
        }
        while (!_shutdownFlag.WaitOne(0));
    }

    // I AM NOT …
Run Code Online (Sandbox Code Playgroud)

.net c# methods multithreading

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