Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Можно ли в C# одновременно запускать несколько методов

19K
22 ноября 2006 года
DARKW
8 / / 22.11.2006
Помогите пожалуйста , как при создании проекта в форме винды одновременно запускать несколько методов. Например: первый метод что -то рисует в форме, я нажимаю на кнопку и одновременно с ним запускается другой метод. Как можно такое реализовать ?:confused: :confused: :confused:
18K
22 ноября 2006 года
xxx-lexus
11 / / 22.11.2006
Thread.Start()
ThreadPool.QueueUserWorkItem или что-то такое

Чтоб одновременно выполнять несколько действий, нужно запустить несколько потоков. Для этого в .Net Framework есть классы Thread и ThreadPool.
16K
22 ноября 2006 года
Sonntex
5 / / 21.03.2006
Можешь использовать класс Delegate и его асинхронные методы BeginInvoke и EndInvoke в сочетании с System.Threading namespace. Если ты работаешь с потоко незащищенными компонентами, то могут возникнуть проблемы. К примеру, если ты хочешь выводить из потока в TextBox (который был создан не этим потоком) какую-то информацию, то нужно возвращать управление потоку создавшему этот TextBox. Это можно сделать, используя AsyncOperation класс. В MSDN есть примеры, смотри, могу посоветовать книжку Andrew Troelsen - Pro C# 2005 and the .NET 2.0 Platform и глава Building Multithreaded Applications (есть на http://www.natahaus.ru/)
19K
22 ноября 2006 года
DARKW
8 / / 22.11.2006
Спасибо за советы, буду пробовать !!!
273
23 ноября 2006 года
3A3-968M
1.2K / / 22.12.2005
Вот простейший пример запуска параллельно двух функций:
Код:
[SIZE=2][COLOR=#0000ff][FONT=Courier New]static [/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][SIZE=2] Main([/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New][] args)[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]{[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#008080] CustomDelegate[/COLOR][/SIZE][SIZE=2] methods = [/SIZE][SIZE=2][COLOR=#0000ff]new [/COLOR][/SIZE][SIZE=2][COLOR=#008080]CustomDelegate[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New](Method1);[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] methods += [/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2][COLOR=#008080]CustomDelegate[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New](Method2);[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#008080] IAsyncResult[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] result =[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]methods.BeginInvoke([/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#800000]"Hello, world"[/COLOR][/SIZE][SIZE=2], [/SIZE][SIZE=2][COLOR=#0000ff]new [/COLOR][/SIZE][SIZE=2][COLOR=#008080]AsyncCallback[/COLOR][/SIZE][SIZE=2](AsyncCallbackHandler), [/SIZE][SIZE=2][COLOR=#0000ff]null[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]);[/FONT][/SIZE]
[SIZE=2][COLOR=#008000][FONT=Courier New] //Some code[/FONT][/COLOR][/SIZE]
[SIZE=2][FONT=Courier New] methods.EndInvoke(result);[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]}[/FONT][/SIZE]
 
[FONT=Courier New][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][SIZE=2] AsyncCallbackHandler([/SIZE][SIZE=2][COLOR=#008080]IAsyncResult[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] result)[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]{[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#008080] Console[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].WriteLine(result.IsCompleted);[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]}[/FONT][/SIZE]
 
[FONT=Courier New][SIZE=2][COLOR=#0000ff]delegate [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]void [/COLOR][/SIZE][SIZE=2][COLOR=#008080]CustomDelegate[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#0000ff]object[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] value);[/FONT][/SIZE]
 
[FONT=Courier New][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][SIZE=2] Method1([/SIZE][SIZE=2][COLOR=#0000ff]object[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] value)[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]{[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff] lock[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] (value)[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#008080]   Console[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].WriteLine(value.GetHashCode());[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]}[/FONT][/SIZE]
 
[FONT=Courier New][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][SIZE=2] Method2([/SIZE][SIZE=2][COLOR=#0000ff]object[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] value)[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]{[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff] lock[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] (value)[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#008080]   Console[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].WriteLine(value);[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]}[/FONT][/SIZE]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог