当前位置: 代码迷 >> C# >> 这个线程锁,如何使用
  详细解决方案

这个线程锁,如何使用

热度:39   发布时间:2016-05-05 03:33:56.0
这个线程锁,怎么使用?

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        Loaded += MainWindow_Loaded;
    }
    bool DialogResult;
    void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        if (MyShow())
            this.Width = 56;
        else
            this.Width = 23;
    }
    private void button1_Click(object sender, RoutedEventArgs e)
    {
        DialogResult = true;
    }
    private void button2_Click(object sender, RoutedEventArgs e)
    {
        DialogResult = false;
    }
    private bool MyShow()
    {
        return DialogResult;
    }
}


在上面的代码中个,启动窗体后,调用MyShow方法。要求,启动后线程阻塞在MyShow那个地方,然后点击窗体中的2个按钮,根据点击不同的按钮,执行不同的结果。
这个该怎么写,如果用Lock的话,或则有更好的方法吗?
------解决思路----------------------
什么线程?阻塞什么东西?

按钮的click事件驱动不同的处理程序,这是任何一个刚学windows图形界面编程的人都会的。跟线程、阻塞扯不上半点关系啊。
------解决思路----------------------
你所谓的“Lock”,我理解你又是认为“有两个线程,在那里分别死循环着,并且阻塞着什么东西。然后根据按钮点击情况,第一个线程干点什么,或者第二个线程干点什么“。

线程根本不是这个干的。如果滥用线程,胡乱搞什么”消费者模式“,那真的是毁掉.net程序员了。
------解决思路----------------------
撸主,你问的问题哪跟哪啊?哪里有什么线程,阻塞什么?看不懂你表达的神马意思呢。
------解决思路----------------------
楼主又是不知道从哪里看到了一些名词,就来堆砌一些概念

根本就没有什么线程,也没有锁.
------解决思路----------------------
根本就没有什么线程,也没有锁.

->

我指的是你的代码里根本没有用到线程,只有一个主线程.
也没有锁.也不需要锁.

什么2个按钮点了分别执行不同的方法,你分别双击2个按钮,生成2个函数,往里写代码不就得了.
------解决思路----------------------

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        Loaded += MainWindow_Loaded;
    }
    void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
    }
    private void button1_Click(object sender, RoutedEventArgs e)
    {
            this.Width = 56;
    }
    private void button2_Click(object sender, RoutedEventArgs e)
    {
            this.Width = 23;
    }
}

不要没事就瞎想什么线程,什么阻塞,什么锁.
------解决思路----------------------
你这不都是主窗体吗?你把主窗体阻塞了,哪还有后面按钮的事情?
  相关解决方案