powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / webforms Асинхронный метод
23 сообщений из 23, страница 1 из 1
webforms Асинхронный метод
    #38316241
Che0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Есть простая станица запускающая один метода. Метод может выполнятся больше часа. После работы требуется отобразить полученный результат. Подскажите как правильней организовать работу.
Код: plaintext
1.
2.
<asp:TextBox  ID="LinkOnSection" runat="server" Width="70%"></asp:TextBox>
                    <asp:Button ID="Start" runat="server" Text="Start" OnClick="Star_Click" />



Код: c#
1.
2.
3.
4.
5.
6.
 protected void Start_Click(object sender, EventArgs e)
        {
          string link = LinkOnSectionAuto.Text;
          string result= Start(link);//тяжелый метод
          Finish(result);// вывод резултатта
        }



Спасибо
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316330
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Che0...Метод может выполнятся больше часа. После работы требуется отобразить полученный результат. Подскажите как правильней организовать работу... .
Есть два варианта:
1. Оптимизировать метод, или купить современный сервер.
2. Найти другую работу.
Это - не шутка, и не поймите, как оскорбление. Просто нифига не понятно, что у вас за тормоза. Много записей в базе? Больше нескольких миллиардов? Тогда - оптимизируйте запросы к ней.
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316332
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПС. А что такое "асинхронный метод"?
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316334
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы хотите нажать кнопку и после этого увидеть прогрессбар с % выполнения?
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316338
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeChe0...Метод может выполнятся больше часа. После работы требуется отобразить полученный результат. Подскажите как правильней организовать работу... .
Есть два варианта:
1. Оптимизировать метод, или купить современный сервер.
2. Найти другую работу.
Это - не шутка, и не поймите, как оскорбление. Просто нифига не понятно, что у вас за тормоза. Много записей в базе? Больше нескольких миллиардов? Тогда - оптимизируйте запросы к ней.

.. это может быть обработка 1с ... цеплять ее на вебформу, конечно, не совсем (точнее совсем не) верно, но тайминг вполне может быть именно таким ...
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316348
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik.. это может быть обработка 1с ... цеплять ее на вебформу, конечно, не совсем (точнее совсем не) верно, но тайминг вполне может быть именно таким ...
А что с 1с? Там как раз проблем-то и нету. Обычно, там очень немного данных. Опишите проблему подробнее. А то у вас получается, типа: нажимаю кнопку - плохо работает, а я хочу, чтобы - хорошо.
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316396
Che0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge,Спасибо за советы о смене работы:). Метод будет выполнятся долго в любом случае. Метод передает и загружает большое количество данных по интернет каналу. Тут все упирается в ширину канала и пинг сервера, а не в производительность сервера.
Собственно ни одного совета по организации работы страницы в асинхронный режим вы не написали.
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316400
Che0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторвы хотите нажать кнопку и после этого увидеть прогрессбар с % выполнения?нет, освободить занимаемый поток.
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316402
Che0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Che0,

Если при таком времени работы в корне не верно вешать на страницу алгоритм, то подскажите вариант более верный со связью со страницей.
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316420
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Che0...Метод передает и загружает большое количество данных по интернет каналу. Тут все упирается в ширину канала и пинг сервера, а не в производительность сервера.
Собственно ни одного совета по организации работы страницы в асинхронный режим вы не написали.
Я не знаю что такое "асинхронный режим". Забудьте.
Если вам чего-то скачать нужно - заведите планировщик на 2 часа ночи, и скачивайте. Всего-навсего надо написать программулину под командную строку.
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316421
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Che0,

вариант в данном случае для вас один: опрос сервера со стороны страницы скриптом. периодический опрос через заданный интервал, типа «готова уже, не?», в ответ будет получать готово или нет и степень готовности, выраженную в процентах. когда будет готово, что делать дальше, зависит от ситуации: перезагрузить страницу или сделать редирект на другую.

есть у вас какие-нибудь сложности в реализации данного механизма?
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316428
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Che0,

кстати, ваш тяжелый метод может завершиться раньше, чем закончит свою работу, если не будет веб-активности. так что скрипт с опросом в любом случае нужен.

в ином случае, тяжелый воркер нужно будет реализовать за пределами ASP.NET, допустим в качестве сервиса, доступного через Service Bus или через другой механизм, их не так мало. тогда запущенная длительная работа будет выполнена в любом случае, не зависимо от цикла жизнедеятельности ASP.NET приложения. что конечно же правильнее.
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316435
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttChe0,

кстати, ваш тяжелый метод может завершиться раньше, чем закончит свою работу, если не будет веб-активности. так что скрипт с опросом в любом случае нужен.

в ином случае, тяжелый воркер нужно будет реализовать за пределами ASP.NET, допустим в качестве сервиса, доступного через Service Bus или через другой механизм, их не так мало. тогда запущенная длительная работа будет выполнена в любом случае, не зависимо от цикла жизнедеятельности ASP.NET приложения. что конечно же правильнее.да, так лучше. ASP.NET иногда перезапускается по разным причинам.

длительному процессу можно назначить что-то типа id, поместить этот id в куки, тогда со страницы можно будет делать периодический аяксовый запрос о состоянии процесса.
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316437
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge,

асинхронно, по-видимому имелось в виду что-то типа такого:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
// было
// string result= Start(link);//тяжелый метод


// стало
var task = System.Threading.Tasks.Task.Factory.StartNew(() => { 

   var result = Start(link) ;

  // do something with result

});


// получим авейтер
var aw = task.GetAwaiter();

// зададим операцию, которая выполнится по завершению
aw.OnCompleted(() => { ... });
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316443
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt....асинхронно, по-видимому имелось в виду что-то типа такого...
Может быть. А толку с этого?
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316448
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge,

освободим поток и не получим таймаут на странице
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316479
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это жара разжижает мозги? или нашествие?
авторМетод может выполнятся больше часа
и что? сидеть потеть 3-12 часов(выполнятся больше часа) наблюдая как крутится пиздю..а
а впрочем можно запустить порно, ( кто быстрее кончит: сервер или юзер..))
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316528
Che0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторасинхронно, по-видимому имелось в виду что-то типа такого:

// было
// string result= Start(link);//тяжелый метод


// стало
var task = System.Threading.Tasks.Task.Factory.StartNew(() => {

var result = Start(link) ;

// do something with result

});


// получим авейтер
var aw = task.GetAwaiter();

// зададим операцию, которая выполнится по завершению
aw.OnCompleted(() => { ... });


да именно в отдельном потоке, простите за неверную терминологию.

авторв ином случае, тяжелый воркер нужно будет реализовать за пределами ASP.NET, допустим в качестве сервиса, доступного через Service Bus или через другой механизм, их не так мало
а можно поподробнее?
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38316536
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Che0,

пишите свой сервис, как это сделать на русском написано здесь: http://habrahabr.ru/post/102826/

ну а здесь родная дока http://msdn.microsoft.com/en-us/library/zt39148a

устанавливаете его в систему на сервере, там тоже написано как это сделать.

далее, со стороны веб-приложения, запускаете сервис когда надо:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
private void StartServiceByName(string serviceName)
        {
            var svc = new ServiceController(serviceName);
            try
            {
                svc.Start();
            }
            catch (Exception ex)
            {
                if (svc.Status == ServiceControllerStatus.Running)
                    svc.Stop();
            } 
        }



еще в конфиге требуется добавить следующую строчку:

Код: xml
1.
<identity impersonate="true" userName="accountname" password="password" />



где userName и password — данные пользователя сервера, которому даны разрешения запускать тот самый сервис.

сервис обращается к веб-приложению через WebClient, допустим, получает нужные данные и точно также обращается, когда надо что-то передать. хотя достаточно простых сигналов, желательно работать с базой данных и хранить все там.

еще можно взаимодействовать через Service Bus, можете глянуть вот сюды: https://shuttle.codeplex.com/

когда сервис закончит свою работу, его можно остановить. и запустить, когда потребуется в следующий раз.
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38317026
ShSergecarrotik.. это может быть обработка 1с ... цеплять ее на вебформу, конечно, не совсем (точнее совсем не) верно, но тайминг вполне может быть именно таким ...
А что с 1с? Там как раз проблем-то и нету. Обычно, там очень немного данных. Опишите проблему подробнее. А то у вас получается, типа: нажимаю кнопку - плохо работает, а я хочу, чтобы - хорошо.В 1С как раз проблем выше крыши. 1 час - далеко не предел.
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38317068
Che0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторсервис обращается к веб-приложению через WebClient, допустим, получает нужные данные и точно также обращается, когда надо что-то передать. хотя достаточно простых сигналов, желательно работать с базой данных и хранить все там.


если не затруднит, можно самый простой пример. Взаимодействия. Спасибо
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38317179
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Che0авторсервис обращается к веб-приложению через WebClient, допустим, получает нужные данные и точно также обращается, когда надо что-то передать. хотя достаточно простых сигналов, желательно работать с базой данных и хранить все там.


если не затруднит, можно самый простой пример. Взаимодействия. Спасибо
Этого добра и в интернете навалом. Честное слово, лень писать. Посмотрите таки, в МСДНе насчёт WebClient.
...
Рейтинг: 0 / 0
webforms Асинхронный метод
    #38318367
Che0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как работать с вебклиент я знаю, я имел ввиду организовать взаимодействие в сервисом и страницей. Понимаю что смогу разобраться и сам, но если у кого есть желание пояснить или накидать примерщик это облегчит мне жизнь
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / webforms Асинхронный метод
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]