
[Anonymous]
25.10.2016
16:06:39
ведь у тебя в массиве хранятся пути к файлам.

Подполковник
25.10.2016
16:06:52
?
тебе прогу скинуть всю?

[Anonymous]
25.10.2016
16:06:59
ну сначала ведь получают путь к файлам

Google

[Anonymous]
25.10.2016
16:07:03
давай скинь в лс

Подполковник
25.10.2016
16:07:23
а рабочую консольную надо?

[Anonymous]
25.10.2016
16:08:05
давай

Подполковник
25.10.2016
16:08:11
щас в лс напишу
напиши первый
ато я не могу

Andrey
25.10.2016
19:02:39
Йо ребят

Подполковник
25.10.2016
19:02:45
кукусеке

Andrey
25.10.2016
19:02:52
Помогите побороть страх и неумение(лень) работы с async await
Простую крутую статью на хабре или что-то такое кто-нибудь подскажет? :)
Еще просто дали задание сделать async метод который сейчас не async :) щас дам скринов
https://i.gyazo.com/655ae7d0b8004815b6459fe81ff43400.png
https://i.gyazo.com/acecc5261f4d6dfac561e1c335b8de54.png

Google

Andrey
25.10.2016
19:04:55
Ну и приветствуется критика.
Это если что код для диспенсера карт на котором установлен считыватель(2 устройства разных, одно выкатывает карту, другое читает)

Vlad
25.10.2016
19:24:50
1. Зачем ты кидаешь эксепшен? И почему он не типизированный
как вызывающий код обрабатывает их?
покажи как клиент вызывает ReadRange

Sergey
25.10.2016
19:36:53
да ему не это надо а пример асинка
а то у него тред.слип

Andrey
25.10.2016
19:42:11
Эксепшн наверху обрабатывается
https://i.gyazo.com/fc24c2a74edee56b5afe4abc57d0036a.png
Нетипизированный эксепшн добавил не я. Сегодня на месте добавили, метод чутка переписали. Сейчас поправил.

Sergey
25.10.2016
19:45:16
кидай код куданить на пастебин
невозможно читать жи

Andrey
25.10.2016
19:47:24
https://git.open-s.info/snippets/1

Vlad
25.10.2016
19:49:32
1. Тип ReadRange не IEnumerable<string> , а List<string>
2. В данном случае вместо исключений лучше использовать такую конструкцию
class ReadRangeResult
{
public bool Success {get;set;}
public CardError Error {get;set;}
public List<string> Cards {get;set;
}

Andrey
25.10.2016
19:50:36
А почему List? Я думал наоборот чем обобщенней тем лучше
Ну я понял что ты имеешь ввиду

Vlad
25.10.2016
19:51:16
ну по факту, клиентам нужен IEnumerable? мне кажется что нет
3. В IssueCard никакие таски не нужны
просто cardCode = _reader.DoReadCard()

Andrey
25.10.2016
19:51:29
Не, там так нельзя
Там Manual Reset Event

Google

Andrey
25.10.2016
19:51:38
Ждет поднесения карты
Он там зависнет
Если карта не выкатится :)

Vlad
25.10.2016
19:52:35
тогда DoReadCard должен возвращать Task
аааа сложна
ReadRange ждет пока ему кто-то пихнет все карты?

Andrey
25.10.2016
19:54:06
Я там врядли что-то перепишу. Там неуправляемый код вызывается. Готовые либы сишные дали и примеры кода, с ними работает
Сек видос скину поймешь кто пихнет :)
https://vk.com/video?z=video26978270_456239077%2Fpl_cat_updates
Диспенсер то что выплевывает карту. Reader(черная штучка сверху читает)
Для диспенсера код я писал(там COM и все довольно просто, нужно правильные команды было отсылать)

Vlad
25.10.2016
19:55:41
крутота

Andrey
25.10.2016
19:55:44
Считыватель с готовыми сишными либами идет

Vlad
25.10.2016
19:57:09
то есть, тебе надо дать DoReadCard фиксированное время на исполнение?

Andrey
25.10.2016
19:58:10
Ну по сути да. Я до этого делал через if(task.wait 1 сек)
Сеня другой поменял это на Thread sleep и task is completed

Sergey
25.10.2016
19:58:31
шта?
тыж сказал что таск
а у таска есть завершение

Andrey
25.10.2016
20:00:14
Короче было вот так https://i.gyazo.com/718f1a493ad09a38e99b49e56490eb70.png

Google

Sergey
25.10.2016
20:00:28
нетак
до компа доберусь - кирну

Andrey
25.10.2016
20:01:05
Так вы меня все запутали теперь)

Vlad
25.10.2016
20:03:24
Нужно для всех карточек вызвать в отдельном потоке DoReadCard с таймаутом и собрать результаты. Правильно?

Sergey
25.10.2016
20:04:52
в стаке готовый костыль нашелся, если таймаут нужен
int timeout = 1000;
var task = SomeOperationAsync(cancellationToken);
if (await Task.WhenAny(task, Task.Delay(timeout, cancellationToken)) == task)
{
// Task completed within timeout.
// Consider that the task may have faulted or been canceled.
// We re-await the task so that any exceptions/cancellation is rethrown.
await task;
}
else
{
// timeout/cancellation logic
}

Vlad
25.10.2016
20:06:53
угу, четко, ради упражнения можно написать

Sergey
25.10.2016
20:06:55
cancellationToken можешь убрать, ты его не используешь, хотя нужно

Admin
ERROR: S client not available

Vlad
25.10.2016
20:06:56
public ResultOrTimeout<T> ExecuteWIthTimeout<T>(Func<T> f, TimeSpan timeout)
{
}

Sergey
25.10.2016
20:08:25
ну да, можно выделить в метод, если нужно в разных местах использовать

Andrey
25.10.2016
20:10:42
Ок. Спасибо большое за советы. Завтра буду смотреть и думать. Таймаут нужен для чтения карты да, потому что диспенсер ошибку не вернет, а вот если карта не считалась то явно что-то пошло не так :)

Vlad
26.10.2016
08:57:12
у тебя не установлен решарпер
using System.Globalization; добавь

Ge$eR
26.10.2016
08:58:29
сенкс, пропустил(

/подгоревшая белочка с нейроновым повидлом
26.10.2016
08:58:32

Vlad
26.10.2016
08:58:35
В ParseExact первый аргумент неверный

Ge$eR
26.10.2016
09:00:42
а как из dateTimePicker получить дату формата "yyyy-MM-01"
число должно всегда 01 быть, месяц и год меняются

Vlad
26.10.2016
09:01:49
var dateTime = DateTime.ParseExact(splitted[0], "yyyy-MM-dd HH:mm:ss", cultureInfo);

Google

Vlad
26.10.2016
09:02:02
вот образец

Sergey
26.10.2016
09:36:40
Посоны, ну вы чо, совсем чтоли уже
Счас же студия даже без решарпера предлагает юзаджы втыкать, ну че вы в самом деле
Я теряю веру в человечество

Михаил
26.10.2016
09:46:49
она начиная толи с 2010 толи 2008 предлагала это альт+шифт+ф10 хоткей конечно так себе

Ge$eR
26.10.2016
09:54:41

Alex
26.10.2016
09:56:25
Или документацию читают только дураки?

Ge$eR
26.10.2016
09:57:15
Святой гугл мне помог найти как парсить...

Alex
26.10.2016
09:59:52
https://msdn.microsoft.com/ru-ru/library/system.datetime.parseexact(v=vs.110).aspx
Понажимай там по ссылочкам, почитай вдумчиво.
Там даже примеры использования есть, так-то

Sergey
26.10.2016
10:02:43
да в этом случае даже МСДН не нужен
все написано
Эта группа больше не существует