Size: a a a

Xamarin Developers

2020 July 30

KA

Kirill Ashikhmin in Xamarin Developers
useR _ Agent
все так, просто метод выполняется несколько раз вместо одного
ну можно написать метод, который в BeginInvokeOnMainThread вызывается, отображает алерт и после этого присваивает результат в TaskCompletionSource, который создается раньше
источник

uA

useR _ Agent in Xamarin Developers
Kirill Ashikhmin
ну можно написать метод, который в BeginInvokeOnMainThread вызывается, отображает алерт и после этого присваивает результат в TaskCompletionSource, который создается раньше
можно пример?
источник

KA

Kirill Ashikhmin in Xamarin Developers
useR _ Agent
можно пример?

     var tcs = new TaskCompletionSource<bool>();
     ShowAlert(tcs);

   void ShowAlert(TaskCompletionSource<bool> tcs)
   {
     Device.BeginInvokeOnMainThread(async ()=>
       {
       await Application.Current.MainPage.DisplayAlert("Hello", "World", "Ok");
       tcs.SetResult(true);
     });
   }

Типо того. И в любой момент можно смотреть за tcs, когда он завершится, или какое в нём состояние
источник

R

Rif in Xamarin Developers
Не легче свой пупап плагином сделать
источник

uA

useR _ Agent in Xamarin Developers
Kirill Ashikhmin

     var tcs = new TaskCompletionSource<bool>();
     ShowAlert(tcs);

   void ShowAlert(TaskCompletionSource<bool> tcs)
   {
     Device.BeginInvokeOnMainThread(async ()=>
       {
       await Application.Current.MainPage.DisplayAlert("Hello", "World", "Ok");
       tcs.SetResult(true);
     });
   }

Типо того. И в любой момент можно смотреть за tcs, когда он завершится, или какое в нём состояние
спасибо за содействие, буду стараться сделать
источник

KA

Kirill Ashikhmin in Xamarin Developers
Rif
Не легче свой пупап плагином сделать
а смысл, если нужен просто эвент?
источник

KA

Kirill Ashikhmin in Xamarin Developers
useR _ Agent
спасибо за содействие, буду стараться сделать
хотя подумал, tcs не нужен, можно просто так
  void ShowAlert()
   {
     Device.BeginInvokeOnMainThread(async ()=>
       {
       await Application.Current.MainPage.DisplayAlert("Hello", "World", "Ok");
       ButtonClicked();
       });
   }

   void ButtonClicked()
   {
     Console.WriteLine("Button clicked");
   }
источник

KA

Kirill Ashikhmin in Xamarin Developers
при старте сканирования вызывается ShowAlert, а в методе ButtonClicked останавливается. Хотя и странный кейс, что ждёт клика в алерте
источник

Ä

Äртем in Xamarin Developers
Приветствую, имею проект со связкой SQLIte+SQL-Net Extensions, стоит задача: при первом запуске приложения  база должна иметь начальные данные, так же в будущем стоит задача миграции БД.

1) Стоит ли менять мою связку на Realm? (как вычитывал раньше из чата, sqlite не поддерживает миграции, что в будущем будет нужно)
2) Есть ли возможность в Realm удобно заполнить первоначальные данные (как в этой статье про SQLite https://metanit.com/sharp/xamarin/7.3.php), что бы не писать тонну кода вставки первоначальных данных, которая отработает при первом запуске приложения? (база содержит 8 таблиц и очень много первоначальных записей около 200, получится трудоемко если писать под каждую код)
источник

KA

Kirill Ashikhmin in Xamarin Developers
Äртем
Приветствую, имею проект со связкой SQLIte+SQL-Net Extensions, стоит задача: при первом запуске приложения  база должна иметь начальные данные, так же в будущем стоит задача миграции БД.

1) Стоит ли менять мою связку на Realm? (как вычитывал раньше из чата, sqlite не поддерживает миграции, что в будущем будет нужно)
2) Есть ли возможность в Realm удобно заполнить первоначальные данные (как в этой статье про SQLite https://metanit.com/sharp/xamarin/7.3.php), что бы не писать тонну кода вставки первоначальных данных, которая отработает при первом запуске приложения? (база содержит 8 таблиц и очень много первоначальных записей около 200, получится трудоемко если писать под каждую код)
с sqlite можно положить таблицу файлом и при запуске проверять - если по нудному пути нет файла таблицы, то копировать его из файлов приложения (assets в android)  и использовать без каких либо добвлений строк и создания таблиц.
миграций автоматических нет, но можно вручную всем этим управлять ебз каких либо проблем.
Ну и SQL-Net Extensions - глючная вещь и может приводить к багам неочевидным в виде потери данных и прочего
источник

Ä

Äртем in Xamarin Developers
Kirill Ashikhmin
с sqlite можно положить таблицу файлом и при запуске проверять - если по нудному пути нет файла таблицы, то копировать его из файлов приложения (assets в android)  и использовать без каких либо добвлений строк и создания таблиц.
миграций автоматических нет, но можно вручную всем этим управлять ебз каких либо проблем.
Ну и SQL-Net Extensions - глючная вещь и может приводить к багам неочевидным в виде потери данных и прочего
То есть есть смысл переходить на realm?
источник

uA

useR _ Agent in Xamarin Developers
Kirill Ashikhmin

     var tcs = new TaskCompletionSource<bool>();
     ShowAlert(tcs);

   void ShowAlert(TaskCompletionSource<bool> tcs)
   {
     Device.BeginInvokeOnMainThread(async ()=>
       {
       await Application.Current.MainPage.DisplayAlert("Hello", "World", "Ok");
       tcs.SetResult(true);
     });
   }

Типо того. И в любой момент можно смотреть за tcs, когда он завершится, или какое в нём состояние
подумал немного, сделал task, получилось примерно так (вызывается после нажатия кнопки)
источник

KA

Kirill Ashikhmin in Xamarin Developers
Äртем
То есть есть смысл переходить на realm?
на вкус и цвет-все фломастеры разные)
С самой SQLite проблем нет, проблемы именно с этим плагином. На счёт Realm - тут надо смотреть, подойдет ли вам. Мне лично он не зашёл
источник

KA

Kirill Ashikhmin in Xamarin Developers
useR _ Agent
подумал немного, сделал task, получилось примерно так (вызывается после нажатия кнопки)
ок
источник

uA

useR _ Agent in Xamarin Developers
Ещё раз спасибо, очень помогли
источник

Ä

Äртем in Xamarin Developers
Kirill Ashikhmin
на вкус и цвет-все фломастеры разные)
С самой SQLite проблем нет, проблемы именно с этим плагином. На счёт Realm - тут надо смотреть, подойдет ли вам. Мне лично он не зашёл
Согласен) А что конкретно вам не понравилось? Я ещё не имел возможности пощупать эту базу, возможно и смысла трогать её не
источник

KA

Kirill Ashikhmin in Xamarin Developers
Äртем
Согласен) А что конкретно вам не понравилось? Я ещё не имел возможности пощупать эту базу, возможно и смысла трогать её не
Не знаю как сейчас , но раньше не было автоинкремента, получения объекта по ид и т.д. Плюс особенности что объекты из базы надо было наследовать от объекта базы или интерфейс реализовывать, и из других потоков с ними не поработать...
В общем для этой базы нужно было подстраивать арзитектуру приложения
источник

Ä

Äртем in Xamarin Developers
Kirill Ashikhmin
Не знаю как сейчас , но раньше не было автоинкремента, получения объекта по ид и т.д. Плюс особенности что объекты из базы надо было наследовать от объекта базы или интерфейс реализовывать, и из других потоков с ними не поработать...
В общем для этой базы нужно было подстраивать арзитектуру приложения
Да согласен с вами, это не подойдёт под моё приложение, нет столько времени чтобы подстраивать архитектуру
источник

KA

Kirill Ashikhmin in Xamarin Developers
ну сейчас, может и изменилось что, уже много лет не смотрел на него
источник

🦉

🦉Sova🦉 in Xamarin Developers
Kirill Ashikhmin
Не знаю как сейчас , но раньше не было автоинкремента, получения объекта по ид и т.д. Плюс особенности что объекты из базы надо было наследовать от объекта базы или интерфейс реализовывать, и из других потоков с ними не поработать...
В общем для этой базы нужно было подстраивать арзитектуру приложения
ну с потоками все просто же, открывай коннекшон, открывай транзакцию, копируй все данные из Realm объектов в обычные)
источник