powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Прошу научить запускать таски на VB.NET
25 сообщений из 91, страница 3 из 4
Прошу научить запускать таски на VB.NET
    #39745845
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что мешает создавать SomeRecord внутри таска, а не снаружи? :)
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39745849
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовал вот так, но не идет - не знаю почему и лень разбираться. Выдает всякие ошибки на апдейте таблицы.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        Dim i As Integer
        Dim oo As New Collection
        For i = 0 To 4
            oo.Add(New SomeRecords("nCou % 5 = " & CStr(i)))
        Next
        Dim o As SomeRecords
        For Each o In oo
            tt.Add(Task.Factory.StartNew(Sub()
                                             o.RunAll()
                                         End Sub))
        Next
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39745851
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesа что мешает создавать SomeRecord внутри таска, а не снаружи? :)
Мешает то, что параметр цикла неправильно передается внутрь таска.
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39745863
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычСейчас это выглядит так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
        Dim o As SomeRecords
        o = New SomeRecords("nCou % 5 = 0")
        tt.Add(Task.Factory.StartNew(Sub()
                                         o.RunAll()
                                     End Sub))
        o = New SomeRecords("nCou % 5 = 1")
        tt.Add(Task.Factory.StartNew(Sub()
                                         o.RunAll()
                                     End Sub))
        o = New SomeRecords("nCou % 5 = 2")
        tt.Add(Task.Factory.StartNew(Sub()
                                         o.RunAll()
                                     End Sub))
        o = New SomeRecords("nCou % 5 = 3")
        tt.Add(Task.Factory.StartNew(Sub()
                                         o.RunAll()
                                     End Sub))
        o = New SomeRecords("nCou % 5 = 4")
        tt.Add(Task.Factory.StartNew(Sub()
                                         o.RunAll()
                                     End Sub))


Вполне нормально. Тут не шарп и нет коллекций.
Если циклом, то нелогично так как зависимость нелинейная.
Забей.
Удачи!
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39745873
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123зависимость нелинейная.
Где?
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39745878
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычPetro123зависимость нелинейная.
Где?
В скорости выполнения. Сам давал тесты. Она нелинейная при увеличении потоков.
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39745880
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,
Если записей станет больше, то не цикл будет, а логику надо будет менять
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39745883
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,
Ну и весь код уложился в экран. Тоже хорошо)
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39745885
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ОК. Спасибо.
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39746037
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

попробуй так

For Each o In oo
var b = o;
tt.Add(Task.Factory.StartNew(Sub()
b.RunAll()
End Sub))
Next
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39746100
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosВладимир Саныч,

попробуй так

For Each o In oo
var b = o;
tt.Add(Task.Factory.StartNew(Sub()
b.RunAll()
End Sub))
Next
Ошибок не выдает, но бегут де-факто только 2 из 5 тасков.
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39746108
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

как это? на троих что ли соображают остальные?
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39746111
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не знаю что ты там делаешь, но суть в том, что каждому потоку надо гарантированно подсовывать уникальный объект.
Когда ты крутишься в цикле замыкание сует потокам объект сформированный на тот момент (и возможно несколько потоков будут работать с одним и тем же объектом).
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39746199
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosВладимир Саныч,

как это? на троих что ли соображают остальные?
Я вижу, какие из записей в таблице обрабатываются. Возможно, бегут все, но обрабатываются только 2 из 5 групп записей.
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39746203
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

надо что бы "b" было уникальным. типа
DataRow b = o.Copy();
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39746350
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем такие сложности...

Код: c#
1.
2.
3.
4.
5.
 public void run(DataTable dt, int maxThreads)
{
       Parallel.For(0, dt.Rows.Count, new ParallelOptions { MaxDegreeOfParallelism = maxThreads },
                (irow) => { Console.WriteLine("{0} {1}", irow, dt.Rows[irow].ItemArray[0]);});
}
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39746363
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На Винде не уметь запускать таски??? Вот на ДОС-е их было забавно запускать=)
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39746638
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoso.Copy();
Не проходит компиляцию.

Изопропилзачем такие сложности...

Код: c#
1.
2.
3.
4.
5.
 public void run(DataTable dt, int maxThreads)
{
       Parallel.For(0, dt.Rows.Count, new ParallelOptions { MaxDegreeOfParallelism = maxThreads },
                (irow) => { Console.WriteLine("{0} {1}", irow, dt.Rows[irow].ItemArray[0]);});
}


У меня программа на VB.
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39746680
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,
Счас скажет: "и зачем такие сложности?")))
"Оговорка по Фрейду...))
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39746703
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычУ меня программа на VB.
http://converter.telerik.com/

ну не популярен vb.net в наших краях

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Public Sub run(ByVal dt As DataTable, ByVal maxThreads As Integer)
    Parallel.[For](0, dt.Rows.Count, New ParallelOptions With {
        .MaxDegreeOfParallelism = maxThreads
    }, Function(irow)
           Console.WriteLine("{0} {1}", irow, dt.Rows(irow).ItemArray(0))
       End Function)
End Sub
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39747309
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, так этот код пускает в каждый поток по одной записи. Я от этого уже давно отказался.
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39747330
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

тебе же написали maxThreads
ставь maxThreads = 4 и будет у тебя 4 потока (если повезет)
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39747542
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я отказался от идеи запускать записи по одной в поток.
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39747548
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычЯ отказался от идеи запускать записи по одной в поток.
Partitioner прикрути
...
Рейтинг: 0 / 0
Прошу научить запускать таски на VB.NET
    #39747570
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посыпаю голову пеплом. Последний вариант работает. Благодарю всех!

ИзопропилPartitioner прикрути
А что это и зачем?
...
Рейтинг: 0 / 0
25 сообщений из 91, страница 3 из 4
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Прошу научить запускать таски на VB.NET
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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