
Max
13.01.2017
02:18:02
Невозможно вызвать Invoke или BeginInvoke для элемента управления до завершения создания дескриптора окна.

Дмитрий
13.01.2017
02:40:47

Max
13.01.2017
02:43:36
раньше все ок было, небыло такой хрени....
ваще понять не могу из за чего оно вылетает

Google

Дмитрий
13.01.2017
02:44:05
ну хз, что сделать-то нужно?

Max
13.01.2017
02:44:30
всмысле?

Дмитрий
13.01.2017
02:45:30
в смысле задачу свою расскажи, что сделать хочешь
щас может найдем простое и элегантное решение

Max
13.01.2017
02:46:01
да я текст просто в ричтекстбокс добавляю
раньше все ок было
я там маленько поменял алгоритм начало эти ошибки сыпать
this.BeginInvoke(new Action(delegate ()
{
richTextBoxLogFollowing.AppendText(acc.Username + ": ERROR!!" + feedResp.message + ": " + feedResp.error_type + '\n');
}));
вот таким макаром я делаю

Дмитрий
13.01.2017
02:48:19
а BeginInvoke где (в каком месте, откуда) вызываешь?

Max
13.01.2017
02:51:44
там много вызовов

Дмитрий
13.01.2017
02:52:03
ну судя по описанию ошибки, в момент выполнения анонимного метода форма ещё не до конца загрузилась

Max
13.01.2017
02:52:46
фигня в том что выполняется программа нормально лог пишется, потом в один прекрасный момент форма крашится

Дмитрий
13.01.2017
02:57:48
хм... без полного кода проекта сложно понять причину
попробуй внутри анонимных методов обернуть код в try - catch и лови исключение
потом смотри stack trace

Google

Max
13.01.2017
02:58:43
вроде нашел
у меня было 2 условия
и создавалась ситуация когда не выполнялось ни одно из них
и цикл просто шел и ниче не делал
но причем тут эта ошибка я хз....
щас посомтрим будут ли еще такие вылеты
странно конечно
всеравно крашится...\

Дмитрий
13.01.2017
03:04:55
магия

Max
13.01.2017
03:04:56
{"Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.\r\nИмя параметра: index"}
даж хз что там за индекс..

Дмитрий
13.01.2017
03:05:57
значит, где-то у тебя при обращении к коллекции типа List или к массиву индекс убежал за границы коллекции

Max
13.01.2017
03:07:42
в одном месте не поменял((
нашел косяк

Дмитрий
13.01.2017
03:09:41
вот и отлично :)

Vyacheslav
13.01.2017
04:31:20
ребят, подскажите как сравнить свойства объектов одного класса?

Дмитрий
13.01.2017
04:44:33
а тип у них какой?
public class SomeClass
{
public double SomeProperty { get; set; }
}
SomeClass a = new SomeClass { SomeProperty = 9000 };
SomeClass b = new SomeClass { SomeProperty = 100500 };
if (a.SomeProperty < b.SomeProperty)
{
// 9000 less than 100500
}
else
{
// do something else
}

Vyacheslav
13.01.2017
04:46:14
public string Server { get; set; }
public int Port { get; set; }
public string Userid { get; set; }
public string Password { get; set; }
public string[] Sample { get; set; }
public Setting(string server, int port, string user, string pass, string[] sample)
{
Server = server;
Port = port;
Userid = user;
Password = pass;
Sample = sample;
}

Levent
13.01.2017
04:46:15

Google

Levent
13.01.2017
04:46:18
прошу

Vyacheslav
13.01.2017
04:46:35
вот класс

Levent
13.01.2017
04:46:47
трипл` до кода, и после
будет так

Дмитрий
13.01.2017
04:46:56
ок
теперь норм?

Levent
13.01.2017
04:47:34
Да, заебись

Дмитрий
13.01.2017
04:48:17
строки можно сравнивать с помощью метода string.Compare

Vyacheslav
13.01.2017
04:48:40
а как объекты их нельзя сравнить?

Дмитрий
13.01.2017
04:48:56
see cref: https://msdn.microsoft.com/ru-ru/library/zkcaxw5y(v=vs.110).aspx

Vyacheslav
13.01.2017
04:48:57
просо никогда не сталкивался с рефлексией

Дмитрий
13.01.2017
04:49:16
кхм... а зачем тут Reflection? O_o

Vyacheslav
13.01.2017
04:49:55
ну мне надо каждое свойство этого класса сравнить у двух объектов класса
т.е. изменились данные или нет

Дмитрий
13.01.2017
04:52:02
SomeClass a = ...;
SomeClass b = ...;
if (a.FirstProperty != b.FirstProperty) // do something
else
if (a.SecondProperty != b.SecondProperty) // do something else
else
if (a.ThirdProperty != b.ThirdProperty) // do other action
ну или в классе переопредели метод Equals

Gid
13.01.2017
04:52:40

Дмитрий
13.01.2017
04:52:47
и будет
if (a.Equals(b))
{
// no changes
}
else
{
// has changes
}

Gid
13.01.2017
04:52:55
Почитай про обсервер

Google

Gid
13.01.2017
04:53:04
Его проще реализовать
Чем страдать чем-то подобным

Дмитрий
13.01.2017
04:53:15
кстати да
вот класс
реализуй в нём интерфейс System.ComponentModel.INotifyPropertyChanged
и вызывай событие PropertyChanged при изменении значения свойства (немного придётся перепилить код в геттерах и сеттерах)
а класс, который должен будет узнать о том, что произошли изменения, просто должен будет подписаться на событие у экземпляра твоего класса
пример реализации на CodeProject: https://www.codeproject.com/Articles/41817/Implementing-INotifyPropertyChanged

Vyacheslav
13.01.2017
05:06:41
спасибо

Semen
13.01.2017
08:29:21
Дратути
Есть глупый вопрос по UWP
Есть listView, в его элементах лежит прогрессбар
<DataTemplate >
<Grid Height="70">
<Grid.RowDefinitions>
...
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
...
</Grid.ColumnDefinitions>
<Rectangle ... />
<TextBlock .../>
<ProgressBar DataContext="{StaticResource loli}"
Value="{Binding LocalProgress, Mode=TwoWay}" .../>
<StackPanel ...>
<TextBlock .../>
<TextBlock .../>
</StackPanel>
<Rectangle .../>
</Grid>
</DataTemplate>
Как сделать биндинг к прогрессбару конкретного элемента из listView?

Slava
13.01.2017
08:30:47
например, какого элемента?

Admin
ERROR: S client not available

Semen
13.01.2017
08:32:06

Slava
13.01.2017
08:32:48
биндинг коллекции к листвью сделал?
тут два пути: делать во вьюмодель свойство для выделенного элемента и забиндить его двусторонним биндингом на selected item
а потом это свойство биндить. Но это неправильно, т.к. прогрессбар должен работать во всех строчках листвью. Поэтому в айтеме делаются поля для прогресса и уже они биндятся

Aleksey
13.01.2017
08:35:28
StaticResource loli

Semen
13.01.2017
08:39:16

Slava
13.01.2017
08:39:41
viewmodel - это шарп
у прогресса есть свойства минимум, максимум, текущее значение прогресса, вот если на последнее забиндить - то все будет показываться

Semen
13.01.2017
08:42:39
То бишь я в классе делаю поле и свойство, подрубаю INotifyPropertyChanged, типа такого:
public int LocalProgress
{
get { return localProgress; }
set
{
localProgress = value;
NotifyPropertyChanged("LocalProgress");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
А при смене значения вызываю PropertyChanged(LocalProgress); ?

Slava
13.01.2017
08:44:45
это в сеттере связанного с UI свойства, все правильно

Google

Slava
13.01.2017
08:45:20
при срабатывании этого события ui лезет в свойство за новыми данными

Semen
13.01.2017
08:46:15
Блин, но не работает
Значит, что-то и где-то я делаю не так(
Лан, спасибо, буду разбираться и искать, где ошибка
Точнее как: работает, но для всех Item'ов из listView одновременно

Slava
13.01.2017
08:48:19
а это тот первый вариант который я писал. делай вариант номер два
ты одно свойство на всё забиндил, вот оно и показывает везде. логично

Semen
13.01.2017
08:51:28
Но я ж не могу создать свойства для всех айтемов
Их кол-во в процессе работы меняется

Slava
13.01.2017
08:51:59
поэтому в то что биндишь на айтем добавляется свойство с прогрессом
интом
и меняешь прогресс таким образом в каждом айтеме

Semen
13.01.2017
08:53:50
Бля, я тупой видать, не понимаю(
Можешь пример какой-нить придумать?

Slava
13.01.2017
08:58:04
Гугли про MVMM и например скачивание файлов

Дмитрий
13.01.2017
09:04:41
как я бы себе это представил:
есть viewmodel, представляющая коллекцию каких-то элементов
у неё внутри есть поле
ObservableCollection<SomethingViewModel>
на эту коллекцию биндятся элементы ListView
соответственно, мы можем добавлять и удалять элементы, при этом будет изменяться содержимое ListView
для отображения элемента есть DataTemplate с ProgressBar-ом внутри
ProgressBar биндится на свойство SomethingViewModel
public int SomeProgress
{
get { return _someProgress; }
private set
{
_someProgress = value;
RaisePropertyChanged(); // << тут CallerMemberName и имя свойства можно не писать
}
}
соответственно, у каждого элемента в ListView будет свой прогресс-бар со своим прогрессом, который будет изменяться на уровне модели... дальше мысль понятна

Slava
13.01.2017
09:06:48
Верно. Можно еще foddy propertychanged прикрутить и RaisePropertyChanged(); не писать.

Дмитрий
13.01.2017
09:07:37
есть вопрос
кто-нибудь пробовал пилить бота на платформе Microsoft Bot Framework?
интересует, как через неё можно в том же телеграме организовать "нижние кнопки"

Сергей
13.01.2017
13:00:37
Ну, так было месяца 3 назад

Slava
13.01.2017
13:01:27
https://docs.botframework.com/en-us/csharp/builder/sdkreference/channels.html
Нужно только сообщение правильно отправить, хотя я не пробовал

Сергей
13.01.2017
13:02:24
А
Ну раз можно вызывать кастомные методы апи таким образом, то все возможно
Эта группа больше не существует