Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
4 / 4 / 4
Регистрация: 10.05.2014
Сообщений: 60
1
.NET 4.x

Локальные переменные в других методах

13.01.2015, 12:59. Показов 1068. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Пока постигаю новый для себя с#, столкнулся с проблемой. Возникла необходимость сделать доступной локальную переменную одного метода в в другом, а именно: имеется некий метод с таймером:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 public ArrayList DeliverList = new ArrayList();
              public System.Timers.Timer aTimer = new System.Timers.Timer();
 public volatile String imei;
 private void Connect()
        {... начало цикла 
           string [COLOR="Red"]Imei[/COLOR] = imei; 
           DeliverList.Add(Imei); 
           aTimer = new System.Timers.Timer();
           aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); //new ElapsedEventHandler(OnTimedEvent)
           aTimer.Enabled = true;
           aTimer.Interval = SendRetry * 1000;  // Set the Interval to 10 second.
           ... конец цикла
}
При срабатывании таймера выполняется условие и необходимо взять актуальную переменную Imei из Connect():
C#
1
2
3
4
5
private void OnTimedEvent(object source, ElapsedEventArgs e)
        {
         DeliverList.Remove([COLOR="Red"]Imei[/COLOR]); // необходима эта переменная, с каждым циклом меняет свое значение
 
        }
Подскажите, как решается такой вопрос?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2015, 12:59
Ответы с готовыми решениями:

Финализатор и локальные переменные, каков принцип "мусорщика" шарпа
Доброго времени. Сегодня экспериментировал с деструктором (финализатором). вот код: delegate...

Метод println() в других методах
Обьясните мне, пожалуйста, почему distance() не выводит значение переменной d? public class Point...

Не видит DoubelArray в других методах кроме ввода
Помогите пожалуйста, в чем ошибка?невозможно обратиться к Double Array using System; using...

Как установить переменные для использования в методах?
я начинающий. Объявите класс segment с полями координат двух точек отрезка, методами для...

6
87 / 87 / 36
Регистрация: 27.11.2011
Сообщений: 713
13.01.2015, 13:16 2
CarterSS, ну как вариант написать свое событие и передавать туда вашу переменную, а там уже делайте с ней все что угодно
0
53 / 53 / 18
Регистрация: 26.07.2012
Сообщений: 188
13.01.2015, 13:37 3
Общий принцип вот такой. Обработчик события нужно немного хитрее записывать. Свою задачу сделаете по аналогии.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    
    private static void TestHandler(String str)
    {
        Console.WriteLine(str);
    }
 
    public static void Main()
    {
        String str = "test";
        for (Int32 i = 0; i < 10; i++)
        {
            var aTimer = new Timer();
            string str1 = str + i;
            aTimer.Elapsed += (sender, args) => TestHandler(str1); 
            aTimer.Enabled = true;
            aTimer.Interval = (i + 1) * 1000;
        }
 
        Console.ReadLine();
        return;
    }
1
4 / 4 / 4
Регистрация: 10.05.2014
Сообщений: 60
13.01.2015, 14:36  [ТС] 4
monstrilla, спасибо, сегодня же протестирую, Ваш вариант, похоже, именно то, что искал.
0
0 / 0 / 1
Регистрация: 13.01.2015
Сообщений: 18
13.01.2015, 15:27 5
Не претендую на правильность варианта, но я-бы описал свойство формы
C#
1
2
3
4
5
6
7
8
9
10
string imei = string.Empty;
public string Imei
{
get {
return imei;
}
set{
imei = value;
}
}
и затем использовал в программе

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public ArrayList DeliverList = new ArrayList();
              public System.Timers.Timer aTimer = new System.Timers.Timer();
 //public volatile String imei;
 private void Connect()
        {... начало цикла 
           string [COLOR="Red"]Imei[/COLOR] = this.Imei; 
           DeliverList.Add(this.Imei); 
           aTimer = new System.Timers.Timer();
           aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); //new ElapsedEventHandler(OnTimedEvent)
           aTimer.Enabled = true;
           aTimer.Interval = SendRetry * 1000;  // Set the Interval to 10 second.
           ... конец цикла
}
 
private void OnTimedEvent(object source, ElapsedEventArgs e)
        {
         DeliverList.Remove([COLOR="Red"]this.Imei[/COLOR]); // необходима эта переменная, с каждым циклом меняет свое значение
 
        }
код не проверял, но думаю суть понятна

UPD: думаю у monstrilla логичней сделано...
0
53 / 53 / 18
Регистрация: 26.07.2012
Сообщений: 188
13.01.2015, 15:42 6
Botovin,

там цикл, а у вас всего только одно свойство для хранения значения. не будет работать
1
0 / 0 / 1
Регистрация: 13.01.2015
Сообщений: 18
13.01.2015, 16:10 7
monstrilla, точно, ересь написал
0
13.01.2015, 16:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2015, 16:10
Помогаю со студенческими работами здесь

Запись из формы данных в переменные php файла, данные из переменные используются в других файлах сайта
Всем привет! Ребят, подскажите пожалуйста! Есть один файл с обычной html формой, в которой обычные...

Локальные переменные
Есть некоторая функция с локальными переменными. После того как эта функция завершит свою работу,...

Локальные переменные
Какие из указанных форм не «могут» самостоятельно создавать локальные переменные LET DO* PROG...

Локальные переменные
У меня вопрос такой, есть две процедуры, где одна вызывает другую, обе содержат локальные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru