오늘의 코딩

C# Lock, Task

용성 2022. 1. 26. 15:39
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        int aliveHome = 0;
        int TotalMoney = 1000000;
        object obj = new object();

        private void button1_Click(object sender, EventArgs e)
        {
            if(TotalMoney > 100000)
            {
                string houseName = "헨젤과 그레텔";
                int housePrice = 100000;
                Task.Run(() => Show(houseName, housePrice, obj));
            } else
            {
                MessageBox.Show("돈이 없습니다.");
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if(TotalMoney > 300000)
            {
                string houseName = "제빵왕 김탁구";
                int housePrice = 300000;
                Task.Run(() => Show(houseName, housePrice, obj));
            } else
            {
                MessageBox.Show("돈이 없습니다.");
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (TotalMoney > 500000)
            {
                string houseName = "인도 왕자";
                int housePrice = 500000;
                Task.Run(() => Show(houseName, housePrice, obj));
            } else
            {
                MessageBox.Show("돈이 없습니다.");
            }

        }

        public void Show(string houseName, int housePrice, object obj)
        {
            lock (obj)
            {
                listBox1.Items.Add("====================================");
                listBox1.Items.Add(houseName + "집에 오신걸 환영합니다.");
                pictureBox4.Visible = false;

                for (int i = 1; i < 4; i++)
                {
                    Thread.Sleep(1000);
                    listBox1.Items.Add(string.Format("{0}일이 지났습니다.", i));
                    aliveHome++;
                }

                listBox1.Items.Add("집에서 쫒겨났습니다.");
                listBox1.Items.Add("====================================");
                pictureBox4.Visible = true;
                label2.Text = string.Format("총 거주일 : {0} 일", aliveHome);
                label1.Text = string.Format("재 산 : {0} 원", TotalMoney = TotalMoney - housePrice);
            }
        }
    }

728x90

'오늘의 코딩' 카테고리의 다른 글

C# Lock  (0) 2022.01.26
C# Linq  (0) 2022.01.25
C# Thread  (0) 2022.01.24
C# delegate pizza  (0) 2022.01.24
C# listView  (0) 2022.01.23