| 1 2 |
| Как такое написать на VB.NET? | |
| От: | senglory | ||
| Дата: | 08.02.10 07:09 |
| C# Set method timeout using Generics I'm out of ideas... |
| Re: Как такое написать на VB.NET? | |
| От: | _FRED_ эксперт | ||
| Дата: | 08.02.10 07:44 | ||
| Оценка: | +2 | ||
| Здравствуйте, senglory, Вы писали: S>C# Set method timeout using Generics S>I'm out of ideas... Ужас какой — не стоит пользоваться тем примером ни из васика, ни из шарпа. Лучше сначала расскажите, что пытаетесь сделать. Написать обобщённый метод вызова с таймаутом всего чего угодно (как по ссылке) идея не самая удачная и хорошо не делается. Если же требуется вызывать с таймаутом некоторый набор методов, то сами эти методы должны подобные вызовы поддерживать. Если интересно, как это сделать, то следует описать более конкретную задачу детальнее. What I've learned about software engineering: 1) Listen to smart people 2) Prefer simple to clever 3) Have no ego 4) Shut the fuck up. Не бойтесь делиться своими методами работы. Большинству людей будет тупо лень их использовать. |
| Re[2]: Как такое написать на VB.NET? | |
| От: | cadet354 | ||
| Дата: | 08.02.10 12:50 |
| Здравствуйте, _FRED_, Вы писали: _FR>Здравствуйте, senglory, Вы писали: S>>C# Set method timeout using Generics S>>I'm out of ideas... _FR>Ужас какой — не стоит пользоваться тем примером ни из васика, ни из шарпа. Лучше сначала расскажите, что пытаетесь сделать. Написать обобщённый метод вызова с таймаутом всего чего угодно (как по ссылке) идея не самая удачная и хорошо не делается. _FR>Если же требуется вызывать с таймаутом некоторый набор методов, то сами эти методы должны подобные вызовы поддерживать. Если интересно, как это сделать, то следует описать более конкретную задачу детальнее. тут не вызвать методы, а прекратить ждать
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>> |
| Re[3]: Как такое написать на VB.NET? | |
| От: | senglory | ||
| Дата: | 08.02.10 15:18 |
| Здравствуйте, cadet354, Вы писали: C>Здравствуйте, _FRED_, Вы писали: _FR>>Здравствуйте, senglory, Вы писали: S>>>C# Set method timeout using Generics S>>>I'm out of ideas... _FR>>Ужас какой — не стоит пользоваться тем примером ни из васика, ни из шарпа. Лучше сначала расскажите, что пытаетесь сделать. Написать обобщённый метод вызова с таймаутом всего чего угодно (как по ссылке) идея не самая удачная и хорошо не делается. _FR>>Если же требуется вызывать с таймаутом некоторый набор методов, то сами эти методы должны подобные вызовы поддерживать. Если интересно, как это сделать, то следует описать более конкретную задачу детальнее. C>тут не вызвать методы, а прекратить ждать C>
Хорошо, как такое изобразить на VB.NET? Мне надо какую-то функцию вызвать и дать ей секунд 5 на выполнение. Не уложилась — TimeOutException или что-то типа этого. |
| Re[3]: Как такое написать на VB.NET? | |
| От: | _FRED_ эксперт | ||
| Дата: | 08.02.10 15:45 |
| Здравствуйте, cadet354, Вы писали: _FR>>Если же требуется вызывать с таймаутом некоторый набор методов, то сами эти методы должны подобные вызовы поддерживать. Если интересно, как это сделать, то следует описать более конкретную задачу детальнее. C>тут не вызвать методы, а прекратить ждать Если надо прекратить ждать и вас не касается, как завершится метод, то "общим" образом реализовать можно. Но предложенное решение не вызывает EndInvoke если ожидание оказалось неуспешным. ИМХО, это "не чисто". EndInvoke должен быть вызван в любом случае. Как этого добиться — отдельный этюд. What I've learned about software engineering: 1) Listen to smart people 2) Prefer simple to clever 3) Have no ego 4) Shut the fuck up. Не бойтесь делиться своими методами работы. Большинству людей будет тупо лень их использовать. |
| Re[4]: Как такое написать на VB.NET? | |
| От: | senglory | ||
| Дата: | 08.02.10 17:22 |
| Здравствуйте, _FRED_, Вы писали: _FR>Здравствуйте, cadet354, Вы писали: _FR>>>Если же требуется вызывать с таймаутом некоторый набор методов, то сами эти методы должны подобные вызовы поддерживать. Если интересно, как это сделать, то следует описать более конкретную задачу детальнее. C>>тут не вызвать методы, а прекратить ждать _FR>Если надо прекратить ждать и вас не касается, как завершится метод, то "общим" образом реализовать можно. Но предложенное решение не вызывает EndInvoke если ожидание оказалось неуспешным. ИМХО, это "не чисто". EndInvoke должен быть вызван в любом случае. Как этого добиться — отдельный этюд. А как, действительно? |
| Re[5]: Как такое написать на VB.NET? | |
| От: | romangr | ||
| Дата: | 09.02.10 10:38 |
| Здравствуйте, senglory, Вы писали: S>Здравствуйте, _FRED_, Вы писали: _FR>>Если надо прекратить ждать и вас не касается, как завершится метод, то "общим" образом реализовать можно. Но предложенное решение не вызывает EndInvoke если ожидание оказалось неуспешным. ИМХО, это "не чисто". EndInvoke должен быть вызван в любом случае. Как этого добиться — отдельный этюд. S>А как, действительно? Например, как-то так:
... << RSDN@Home 1.2.0 alpha 4 rev. 1238>> |
| Re[6]: Как такое написать на VB.NET? | |
| От: | cadet354 | ||
| Дата: | 09.02.10 11:10 |
| Здравствуйте, romangr, Вы писали: R>Здравствуйте, senglory, Вы писали: S>>Здравствуйте, _FRED_, Вы писали: R>Например, как-то так: R>
lock зачем? ... << RSDN@Home 1.2.0 alpha 4 rev. 1270>> |
| Re[7]: Как такое написать на VB.NET? | |
| От: | Codechanger | ||
| Дата: | 09.02.10 11:28 |
| Здравствуйте, cadet354, Вы писали: C>Здравствуйте, romangr, Вы писали: R>>Здравствуйте, senglory, Вы писали: S>>>Здравствуйте, _FRED_, Вы писали: R>>Например, как-то так: R>>
C>lock зачем? Лок в приведенном коде будет работать странно... |
| Re[8]: Как такое написать на VB.NET? | |
| От: | romangr | ||
| Дата: | 09.02.10 12:44 |
| Здравствуйте, Codechanger, Вы писали: C>Лок в приведенном коде будет работать странно... Попытаюсь объяснить.
В наши задачи входит следующее. 1. Обязательно выполнить func.EndInvoke в любом случае — уложились ли мы в отведенное время, либо нет 2. Если мы вызываем func.EndInvoke — мы должны сделать это один раз. При вызове в строке (2) присваивание ar = func.BeginInvoke может пройти позже, чем использование ar в строке (4), т.к. коллбэк выполняется в отдельном потоке, а пути планировщика неисповедимы, поэтому нужны локи (1) и (3) Если функция выполнилась нормально, то основной поток дойдет до точки (5) и благодаря локам (1) и (3) func.EndInvoke выполнится один раз в точке (5) Если же функция превысит таймаут, то мы провалимся в точку (6) и освободим лок (1), а func.EndInvoke выполнится в точке (4), когда наша функция завершится ... << RSDN@Home 1.2.0 alpha 4 rev. 1238>> |
| Re[6]: Как такое написать на VB.NET? | |
| От: | senglory | ||
| Дата: | 09.02.10 16:19 |
| Здравствуйте, romangr, Вы писали: R>Здравствуйте, senglory, Вы писали: S>>Здравствуйте, _FRED_, Вы писали: _FR>>>Если надо прекратить ждать и вас не касается, как завершится метод, то "общим" образом реализовать можно. Но предложенное решение не вызывает EndInvoke если ожидание оказалось неуспешным. ИМХО, это "не чисто". EndInvoke должен быть вызван в любом случае. Как этого добиться — отдельный этюд. S>>А как, действительно? R>Например, как-то так: R>
Замечательно, а на VB.NET как это все написать? |
| Re[7]: Как такое написать на VB.NET? | |
| От: | romangr | ||
| Дата: | 09.02.10 17:44 |
| Здравствуйте, senglory, Вы писали: S>Замечательно, а на VB.NET как это все написать? Для начала перепишем код на C#
Для VB придется поработать ручками:
... << RSDN@Home 1.2.0 alpha 4 rev. 1238>> |
| Re[7]: Как такое написать на VB.NET? | |
| От: | crackoff | ||
| Дата: | 09.02.10 17:48 |
| Здравствуйте, senglory, Вы писали: S>Замечательно, а на VB.NET как это все написать? Давай я сделаю это за тебя.
К сожалению, VB 2008 у меня нет, поэтому скомпилить и проверить не могу. |
| Re[8]: Как такое написать на VB.NET? | |
| От: | romangr | ||
| Дата: | 09.02.10 18:03 | ||
| Оценка: | 2 (1) | ||
| Здравствуйте, crackoff, Вы писали: C>Давай я сделаю это за тебя. хъ C>К сожалению, VB 2008 у меня нет, поэтому скомпилить и проверить не могу. Я проверял, рефлектор облажался ... << RSDN@Home 1.2.0 alpha 4 rev. 1238>> |
| Re[9]: Как такое написать на VB.NET? | |
| От: | romangr | ||
| Дата: | 09.02.10 18:16 |
| Здравствуйте, romangr, Вы писали: От локов можно избавиться, применив CAS:
... << RSDN@Home 1.2.0 alpha 4 rev. 1238>> |
| Re[8]: Как такое написать на VB.NET? | |
| От: | senglory | ||
| Дата: | 10.02.10 15:04 |
| Здравствуйте, romangr, Вы писали: R>Здравствуйте, senglory, Вы писали: S>>Замечательно, а на VB.NET как это все написать? R>Для начала перепишем код на C# R>
R>Для VB придется поработать ручками: R>
Хорошо, допустим что у меня есть:
Как будет выглядеть вызов моей функции из этого кода? |
| Re[9]: Как такое написать на VB.NET? | |
| От: | romangr | ||
| Дата: | 11.02.10 07:04 | ||
| Оценка: | 8 (1) | ||
| Здравствуйте, senglory, Вы писали: S>Хорошо, допустим что у меня есть: S>
S>Как будет выглядеть вызов моей функции из этого кода? Учу пользоваться лямбдами. Дорого.
... << RSDN@Home 1.2.0 alpha 4 rev. 1238>> |
| Re[9]: Как такое написать на VB.NET? | |
| От: | cadet354 | ||
| Дата: | 11.02.10 10:14 |
| Здравствуйте, romangr, Вы писали: R>В наши задачи входит следующее. R>1. Обязательно выполнить func.EndInvoke в любом случае — уложились ли мы в отведенное время, либо нет R>2. Если мы вызываем func.EndInvoke — мы должны сделать это один раз. R>При вызове в строке (2) присваивание ar = func.BeginInvoke может пройти позже, чем использование ar в строке (4), R>т.к. коллбэк выполняется в отдельном потоке, а пути планировщика неисповедимы, поэтому нужны локи (1) и (3) R>Если функция выполнилась нормально, то основной поток дойдет до точки (5) R>и благодаря локам (1) и (3) func.EndInvoke выполнится один раз в точке (5) R>Если же функция превысит таймаут, то мы провалимся в точку (6) и освободим лок (1), R>а func.EndInvoke выполнится в точке (4), когда наша функция завершится а просто передавать это (выполнились нормально или нет) со state не проще? ... << RSDN@Home 1.2.0 alpha 4 rev. 1270>> |
| Re[10]: Как такое написать на VB.NET? | |
| От: | romangr | ||
| Дата: | 11.02.10 11:36 |
| Здравствуйте, cadet354, Вы писали: C>а просто передавать это (выполнились нормально или нет) со state не проще? Когда я это на VB переводил, слегка модифицировал, вроде понятнее получилось здесь Автор: romangr Дата: 09.02.10 А вообще мне постановка задачи не нравится, я ее тут порешал just for fun, ну и в VB потренировался. Узнал, что в лямбдах в VB только Expressions могут быть, в отличие от C# ... << RSDN@Home 1.2.0 alpha 4 rev. 1238>> |
| Re[11]: Как такое написать на VB.NET? | |
| От: | senglory | ||
| Дата: | 03.03.10 14:54 |
Хорошо, в вот такое как на VB.NET изобразить?
|
| 1 2 |