powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Прошу научить запускать таски на VB.NET
16 сообщений из 91, страница 4 из 4
Прошу научить запускать таски на VB.NET
    #39747586
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вспомнил, что остался еще один неотвеченный вопрос:
Владимир СанычИ еще вопрос. Локальные переменные, описанные в этой вызываемой асинхронно процедуре, у каждого вызова свои? Мне кажется, что одни и те же и разные вызовы затирают их друг другу.
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39747595
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

свои
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39747600
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычПосыпаю голову пеплом. Последний вариант работает. Благодарю всех!

ИзопропилPartitioner прикрути
А что это и зачем?чтоб группу записей в потоке обрабатывать

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Sub run(ByVal dt As DataTable, ByVal maxThreads As Integer)
    Parallel.ForEach(Partitioner.Create(0, dt.Rows.Count, dt.Rows.Count / maxThreads), New ParallelOptions() With {
        .MaxDegreeOfParallelism = maxThreads
    }, Function(range, loopState)

           For i As Integer = range.Item1 To range.Item2 - 1
               DoIt(dt.Rows(i))
           Next
       End Function)
End Sub



или

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Public Sub run(ByVal dt As DataTable, ByVal maxThreads As Integer)
    Parallel.ForEach(Partitioner.Create(Of DataRow)(dt.Rows.Cast(Of DataRow)()), New ParallelOptions() With {
        .MaxDegreeOfParallelism = maxThreads
    }, Function(row, loopState)
           DoIt(row)
       End Function)
End Sub
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39747657
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosсвои
Thanx.

Изопропилчтоб группу записей в потоке обрабатывать
Не понимаю, что делает этот код. Какая именно группа записей попадает в один поток?
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39747675
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

в первом случае записи из диапазона 0 .. dt.Rows.Count -1
разбитом на поддиапазоны по dt.Rows.Count/maxThreads записей

втором - извлекаемые из таблицы по мере обработки (вызовов DoIt), динамическая группа
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39748577
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилизвлекаемые из таблицы по мере обработки (вызовов DoIt), динамическая группа
А! Да, так лучше, конечно. Спасибо.
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39748580
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только оно не едет. Скопировал к себе второй из двух вариантов, получил:

Overload resolution failed because no accessible 'ForEach' can be called with these arguments

Думаю, что не нужно продолжать, работающая версия у меня уже есть.
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39748657
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 Public Sub run1(ByVal dt As DataTable, ByVal maxThreads As Integer)
            Dim pp As OrderablePartitioner(Of Tuple(Of Long, Long))
            pp = Partitioner.Create(0, dt.Rows.Count, CLng(dt.Rows.Count / maxThreads))
            Parallel.ForEach(pp, New ParallelOptions() With {
                .MaxDegreeOfParallelism = maxThreads
                    }, Sub(range, loopState)
                           For i As Integer = range.Item1 To range.Item2 - 1
                               DoIt(dt.Rows(i))
                           Next
                       End Sub)
        End Sub
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39749305
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увы, всё по-прежнему:
Владимир СанычOverload resolution failed because no accessible 'ForEach' can be called with these arguments

Думаю, что не нужно продолжать, работающая версия у меня уже есть.
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39749394
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

дело принципа уже ))
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39750043
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно. Если я открываю прямо этот проект, то ошибок нет. Даже при том, что я при открывании поменял .Net с 4.6.1 на мой 4.5.2. Если же я копирую код в мой проект, то опять получаю ту же ошибку (два раза: на run и на run1).

Если я в обоих проектах ставлю мышку на Parallel и жму Go To Definition, получаю одну и ту же страничку с такой начальной частью:
Код: vbnet
1.
2.
3.
#Region "Assembly mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
' C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\mscorlib.dll
#End Region
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39750044
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что интересно - я в своем проекте был вынужден добавить строчку
Imports System.Collections.Concurrent
а в твоем проекте всё работает и без нее.
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39750511
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Владимир СанычИ что интересно
Микрософт - загадочная страна
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39750515
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Владимир Саныч,
Ты хотя бы попробовал то, как я в начале предложил? Иди так и продолжаешь возится с await-asinc?
Это же практически "сахар" синтаксический над Тасками
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39750517
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Я и ВС давно знакомы. Он и я имеют привилегию друг-друга на Ты называть.
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39750674
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Владимир Саныч,
Ты хотя бы попробовал то, как я в начале предложил?
Давно! Вот моя реакция:
21759466
Но эту проблему потом решили.
...
Рейтинг: 0 / 0
16 сообщений из 91, страница 4 из 4
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Прошу научить запускать таски на VB.NET
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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