![]() |
Проблема с C#
[С#]
Такая проблема. Во время выполнения ресурсоёмкой операции (напр, генерации множества паролей в файл) программа полностью "зависает" - нельзя нажимать кнопки и т.д. Как это исправить? Нужно чтобы я мог добавить кнопку отмены операции, выводить прогресс операции (сколько паролей сгенерировано)... Программа построена на таком принципе: PHP код:
|
1 поток ..асинхронная работа
2 не по теме ,автор почему ты и многие не могут прочитать не одной книжки перед тем как садиться что-то писать. 3.гугл-) |
в одном потоке генерация паролей и изменение прогресс бара
кнопочка стоп меняет какую-то переменную которая явлется флагом для цикла в первом потоке замечание --единственное токо надо учесть обращение к флагу из разных потоков......... примерно так например. |
Графика вся - в 1 поток.
|
юзай BackgroundWorker - компонент из .NetFramework, позволяет выполнять методы в отдельных потоках в фоне и передавать из них данные о состоянии работы в основной поток.
В MSDN работа с ним довольно хорошо описана + примеры. |
Цитата:
Анализ выражения 1/260 начинается с определения типов операндов. Оба типа - int, поэтому результат будет тоже типа инт. Производится целочисленное деление с отбрасыванием дробной части - результат 0, потом он преобразовывается к типу float и получается 0.0 Выход - нужно делить не целые числа, а дробные. 1.0/260.0 Цитата:
|
Метод gendic, равно как и элемент класса t, должен быть статическим, то есть мог вызываться без создания объекта данного класса.
Вот тебе пример из MSDN, комменты прилагаются. Код:
using System;Цитата:
|
метод позволяет "снимать" визуальный эффект "висячки" Application.DoEvent();
пауза с помощью метода Interrupt отмена потока с помощью Abort О потоках на русском языке http://rsdn.ru/article/dotnet/CSThreading1.xml |
| Время: 21:14 |