Таймер C # - получение ошибки «Ожидается имя метода» - PullRequest
0 голосов
/ 07 декабря 2010

Когда я пытаюсь установить тиковое событие моего таймера и использовать метод, я получаю эту ошибку.Что здесь не так?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Timers;

namespace QueueSimulation
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public void Form1_Load(object sender, EventArgs e)
        {  
        }

        public void goButton_Click(object sender, EventArgs e)
        {
            ProcessCustomers CustomerQueue = new ProcessCustomers(); // create the CustomerQueue

            System.Windows.Forms.Timer queueTimer = new System.Windows.Forms.Timer();
            queueTimer.Interval = Convert.ToInt32(customerArriveChooser.Value*1000);   
            queueTimer.Tick += new ElapsedEventHandler(CustomerQueue.Arrive()); 

            CustomerQueue.Arrive();
        }

        private void stopButton_Click(object sender, EventArgs e)
        {
            // put code here to break out of the program
        }
    }

    public class Customer
    {
        int timeInQueue;
    }

    public class ProcessCustomers
    {   
        public void Arrive(){}

        public void Leave(){}
    }

    public class Server
    {
        bool servingStatus = false; // true for serving, false for not serving
    }

    public class Queue
    {
        Customer[] queue = new Customer[49]; // initialise a queue (array) capable of holding 50 customers
    }
}

Ответы [ 2 ]

1 голос
/ 07 декабря 2010

Я подозреваю, что вы хотите использовать метод name , не вызывать его и использовать возвращаемое значение:

queueTimer.Tick += new EventHandler(CustomerQueue.Arrive);

Поскольку возвращаемое значение Arrive не является типом делегата, вы не можете его использовать.

Обратите внимание, что подпись обработчика событий должна соответствовать подписи делегата - в случае Tick это EventHandler:

public delegate void EventHandler(
    Object sender,
    EventArgs e
)

ТакВаш Arrive метод должен принимать следующие два параметра:

public void Arrive(Object sender, EventArgs e){}
0 голосов
/ 07 декабря 2010

ElapsedEventHandler - дескриптор для System.Timer, а не для System.Windows.Forms.Timer

событие должно выглядеть следующим образом:

queueTimer.Tick += new ElapsedEventHandler(queueTimer_Tick); 


void queueTimer_Tick(object sender, EventArgs e)
{
    CustomerQueue.Arrive();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...