longlong0601 2013-12-09 09:50 采纳率: 0%
浏览 943

c#多线程问题,书到用时方恨少啊!

我的窗体中有许多的button,但是我想让他随机显示出来并在屏幕上停留一段时间后自动消失,但同时随机显示button的线程不能受干扰。
本来我以为应该很简单,但是线程学的不好,所以……呵呵,拜托前辈们了。

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-01 14:56
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    可以使用以下方法实现:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    
    namespace CsharpMultiThreadTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 创建一个列表来存储按钮对象
                List<Button> buttons = new List<Button>();
    
                for (int i = 0; i < 10; i++)
                {
                    // 创建一个新的按钮对象,并将其添加到列表中
                    Button button = new Button();
                    button.Text = "Button" + i.ToString();
                    buttons.Add(button);
                }
    
                // 创建一个新的线程来处理按钮的显示和消失
                Thread thread = new Thread(ShowAndHideButtons);
                thread.Start();
    
                Console.ReadKey();
            }
    
            private static void ShowAndHideButtons()
            {
                // 随机选择一个按钮进行显示和隐藏操作
                Random random = new Random();
                int index = random.Next(buttons.Count);
    
                while (true)
                {
                    if (buttons[index].Visible == true)
                    {
                        buttons[index].Visible = false;
                        Console.WriteLine("Button {0} is hidden.", buttons[index].Text);
                        Thread.Sleep(500); // 等待一定时间后再显示
                        buttons[index].Visible = true;
                        Console.WriteLine("Button {0} is shown again.", buttons[index].Text);
                        Thread.Sleep(500); // 等待一定时间后再显示
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
    
        public class Button : System.Windows.Forms.Button
        {
            public Button()
            {
                Visible = true;
            }
        }
    }
    

    这个程序首先创建了一个包含10个按钮的对象列表。然后,它创建了一个新的线程(thread)来执行ShowAndHideButtons方法。在ShowAndHideButtons方法中,我们随机选择一个按钮并检查它的可见性。如果按钮是可见的,我们就让它变为不可见;如果按钮是不可见的,我们就让其变为可见。这样,我们就可以让按钮在屏幕上的位置和时间上进行随机移动和变化。

    评论

报告相同问题?