LINUX.ORG.RU

2
Всего сообщений: 31

C# async await доступ к UI из потока

Здравствуйте, помогите разобраться, я не программист C# и мне с трудом дается разобраться с некоторыми моментами.

Значит, есть у меня форма, в которой всего один элемент UI это - label1, а так же метод myFunc() и его асинхронный вызов myFuncAsync.

Ну вот так:

using System;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MyProject
{
    public partial class FormTest : Form
    {
        public FormTest()
        {
            InitializeComponent();
        }

        // Простой статический метод
        public static void bar()
        {
            MessageBox.Show("Hello dude ;)");
        }

        // Загрузка формы
        private void FormTest_Load(object sender, EventArgs e)
        {
            myFuncAsync();
        }


        // Функция которая будет выполняться в отдельном потоке
        private void myFunc()
        {
            Thread.Sleep(2000);
            FormTest.bar();

            label1.Text = "Brorororor"; // КАК ТУТ ПОЛУЧИТЬ ДОСТУП К ЭЛЕМЕНТУ UI ????????
        }

        // Асинхронный вызов myFunc
        private async void myFuncAsync()
        {
            Task task = new Task(myFunc);
            task.Start();
            await task;
        }
    }
}

Все работает, кроме доступа к UI из потока. Выхватываю понятное исключение:

Исключение типа "System.InvalidOperationException" возникло в System.Windows.Forms.dll, но не было обработано в коде пользователя

Дополнительные сведения: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'label1' не из того потока, в котором он был создан.

Как мне с потока до UI достучаться?

Спасибо.

 , , , ,

httpxss ()

HTTPS POST запрос посредством CURL в среде Visual C++

Не понимаю, где кроется ошибка. Пробовал двумя разными способами, толку никакого. Может Вы что увидите...

void SendMessage(SYSTEMTIME localTime) {
      CURL* curl;
      CURLcode res;

      std::wstringstream fmt;
      fmt << ((localTime.wDay < 10) ? (_T("0")) : (_T(""))) << localTime.wDay << _T(".")
          << ((localTime.wMonth < 10) ? (_T("0")) : (_T(""))) << localTime.wMonth << _T(".") << localTime.wYear << _T(" ")
          << localTime.wHour << _T(":") << localTime.wMinute << std::endl;

      TCHAR* fields = NULL;
      fmt >> fields;

      curl = curl_easy_init();

      if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL,
                         "https://api.telegram.org/bot{MyToken}/sendMessage");
        curl_easy_setopt(curl, CURLOPT_HTTPPOST, 1);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, _tcscat_s(_T("chat_id={MyChatId}&text="), 23, fields));
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);
      }
    }
или
void SendMessage(SYSTEMTIME localTime) {
  CURL* curl;
  CURLcode res;

  std::stringstream fmt;
  fmt << ((localTime.wDay < 10) ? ("0") : ("")) << localTime.wDay << "." << ((localTime.wMonth < 10) ? ("0") : (""))
      << localTime.wMonth << "." << localTime.wYear << " " << localTime.wHour << ":" << localTime.wMinute << std::endl;

  char* fields = nullptr;
  fmt >> fields;

  curl = curl_easy_init();

  if (curl) {
    curl_easy_setopt(curl, CURLOPT_URL,
                     "https://api.telegram.org/bot{MyToken}/sendMessage");
    curl_easy_setopt(curl, CURLOPT_HTTPPOST, 1);
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, strcat("chat_id={MyChatId}&text=", fields));
    res = curl_easy_perform(curl);
    curl_easy_cleanup(curl);
  }
}

Перемещено beastie из general

 , , , ,

jeudesprit ()

MS Code + OpenBSD

Всё еще озабочен переходом на опенек, видео в ютабе починил, остался тачпад + софт. Нравится MS Code для JS, что мешает его собрать под опёнок? Атом вроде работает под фряхой, верно?

 , , ,

BruteForce ()

Visual Studio 2017

Подозрительно, что до сих пор не видно темы о сабже, в частности, Community Edition. В новой версии появилась такая штука как

Linux development with C++
Description: Create and debug applications running in a Linux environment.

То есть под Linux сама IDE ещё не работает, но уже есть какие-то инструменты для разработки под него.

Забавно, что для оффлайновой установки в Windows нужна полностью обновлённая Windows. Предыдущие оффлайновые iso-шки Community Edition 2013, 2015 (с обнолениями) отличились тем, что с них нельзя было произвести установку ... в офлайновом режиме (весь интернет наполнен болью из-за этого факта): система тоже должна была полностью быть обновлена, т.к. без каких-то сертификатов установщик не видит кучу файлов на образе диска.

ISO-шника в этот раз нет, но можно выкачать либо все компоненты, либо набор под собственные хотелки. Параметры для этого придётся указывать параметрами командной строки в терминале.

 ,

grem ()

Visual Studio for Linux

Проект: https://marketplace.visualstudio.com/items?itemName=VisualCPPTeam.VisualCforL...

Описание что с этим делать: https://habrahabr.ru/post/321228/

Емакс о капец

 

stevejobs ()

Visual Studio for Mac

сабж, планируют уже в ноябре выпустить свою тормозную поделку для мака.

https://techcrunch.com/2016/11/14/microsoft-announces-visual-studio-for-mac-w...

Mac-капец близок?

Update: как выяснилось - это нечто типа болгенос, т.е. переименованая xamarin studio, она же - mono develop.

 ,

invy ()

Чтение переменных на visual studio code

Здравствуйте! Недавно скачал новое ide от microsoft--visual studio code и не знаю как читать переменные. Пишу на python 3: a=int(input()) запускаю прогу ctrl+shift+b и что дальше? tasks.json: { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format «version»: «0.1.0», «command»: «python3.4», «isShellCommand»: true, «args»: [«${file}»], «showOutput»: «always» }

 

levon12341 ()

Git Server Web на Debian 8.4 (jessie)

Коллеги, четыре дня мучаюсь с установкой Git сервера на Debian 8.4 (jessie), выполнил пошагово десятки разных найденных готовых инструкций, но полноценного результата не достиг.

Git провайдер Visual Studio 2015 под Windows в упор не хочет загружать репозиторий с указанного сервера Debian (404 not found). При этом в Windows консоли репозиторий клонируется по ssh, он виден в браузере при доступе через Http. Наткнулся на то, что провайдер поддерживает только smart Http, т.е. нужна правильная настройка httpd в debian. Но в Debian напрочь отсутствует служба демона httpd, через apt-get она тоже не находится. Файлы конфигурирования httpd отсутствуют, создание их вручную не помогает. Также указанный VirtualHost (ServerName=...) в конфигах, тоже не отзывается ни на локалке debian, ни на Windows компьютере этой сети. Такое ощущение, что VirtualHost не поднимается. Пакет gitweb установлен, сайт поднят (a2ensite)

Не работал с Debian в этих деталях никогда, но по работе кровь из носа - надо сделать. Во многих инструкциях пропущены мелкие детали, например внести то-то в файл конфигурации того-то, подразумевая, что все знают где он находится. К сожалению из-за этих деталей мог ошибаться при настройке. Может кто-то сможет подсказать зацепку, или сталкивался с этой проблемой, или находил более детальную инструкцию, чем те что на виду, либо какие детали важно описать? Заранее спасибо!

 , , ,

Petiay83 ()

Xamarin будет поставляться во всех версиях Visual Studio бесплатно (не первоапрельская шутка)

для не Ъ: http://www.anandtech.com/show/10212/microsoft-announces-xamarin-will-be-inclu...

Любопытно какой процент людей срулит с Qt и подобных свободных фреймворков на Visual Studio и соответственно на венду.

 ,

vehn ()

Visual C++ for Linux Development

Microsoft выпустила дополнение, позволяющее разрабатывать приложения для Linux в Visual C++ (нужен удаленный Linux). Имеется поддержка GDB, ARM, Raspberry Pi и десктопных приложений.

Пруф: https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-develop...

 , ,

snizovtsev ()

Мультиплатформенный csproj

Хотелось бы найти способ использовать один и тот же csproj файл и в monodevelop под линуксом и в VCStudio под вендой.

Сейчас проблема кроется вот здесь:

  <PropertyGroup>
    <PostBuildEvent>del много_всякого
    </PostBuildEvent>
  </PropertyGroup>

Это можно как-то обойти?

Ставить coreutils на венду — не вариант.

 ,

morse ()

В поисках идеального редактора - Atom vs Visual Studio Code

Заморочился тут я в поиске хорошего и оупенсорсного универсального рабочего инструмента для себя, и начать поиски решил с самого нового и популярного. Все впечатления от Atom и Visual Studio Code развернуто расписаны расписаны здесь, если кратко:

  • Atom делает 70-80% нужного мне функционала, скорее всего покопавшись в плагинах я смогу найти остальное. НО: в итоге потреблять ресурсов он наверное тогда станет как полноценная IDE на Java
  • Visual Studio Code оказался типичным софтом от Microsoft - много шума и пиара, но мало дела. Изкоробочных возможностей мало, плагинов тоже.

Итак, куда податься? Выбросить кучу времени на освоение GNU Emacs или есть другие альтернативы? Было бы очень хорошо обойтись без holy wars, но на лоре такое врядли возможно.

P.S. В конце моего опуса 19 человек проголосовали за VSC, видимо им кто-то пользуется.

 , , , ,

PaulCarroty ()

Gitolite работа по SSH и HTTP одновременно

Есть сервер с

UBUNTU 14.04

На сервере установлено:

git 1.9.1 gitolite apache2

Сейчас все прекрасно работает по ssh. Но клиенты работают через VisualStudio и пушат по HTTP. Оказывается VisualStudio не поддерживает протокол ssh, только http. Есть какие то костыли но они только для студии 2015.

Сделал все по инструкции:

В конфигурационном файле apache2 который находится по пути /etc/apache2/apache2.conf добавил такое

SetEnv GIT_PROJECT_ROOT /opt/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/

&lt;Directory "/usr/lib/git-core*"&gt;
   Options ExecCGI Indexes
   Order allow,deny
   Allow from all
   Require all granted
&lt;/Directory&gt;

&lt;LocationMatch "^/git/.*/git-receive-pack$"&gt;
    AuthType Basic
    AuthName "Git Access"
    AuthUserFile /opt/git/.htpasswd
    Require valid-user
&lt;/LocationMatch&gt;

После этого по пути /opt/git/ создал файл .htpasswd и командой

$ htdigest -c /opt/git/.htpasswd "Git Access" git

добавил пользователя git для аутентификации.

После всего проделанного на клиентской машине пытаюсь клонировать репозиторий gitolite-admin, c помощью gitBash, который находится на сервере по пути /home/git/repositories/gitolite-admin.git

$ git clone http://192.168.196.133/home/git/repositories/gitolite-admin.git
Cloning into 'gitolite-admin'...
fatal: repository 'http://192.168.196.133/home/git/repositories/gitolite-admin.git/' not found

 , , ,

MARKSIST ()

Сброка под оффтопик на Visual Studio

Всем привет, пытаюсь свой проект под оффтопик собрать через Visual Studio Community, но для начала нужно скомпилить кое-какие библиотеки, а т.к. хочется x64 то решил взять VS.
Собственно вопрос к знатокам, в каких директориях cmake ищет библиотеки на венде? Скачал я библиотеку допустим freetype, но как теперь cmake ее найдет? вручную путь указывать как-то не очень хочется.

 ,

Int64 ()

Текстовый редактор Visual Studio Code

Кто пробовал Visual Studio Code, версию под Linux?
Каковы впечатления?
https://www.visualstudio.com/products/code-vs

 ,

pacify ()

Чем собрать код, созданный для VS, windows forms?

Прислал мне знакомый студент какое-то говно, вроде проект VS.
Исходный код записан в каком-то непонятном stdafx.cpp, рядом лежат исходники ресурсов.
Функции написаны по-русски (я полагаю, штудия сама их пихает везде) Чем это можно собрать?

 , ,

mittorn ()

А пока тулкитофобы дерутся за GTK+ и Qt...

... на арену врывается хромоговская Aura! http://pic4a.ru/58/zf.png Мимикрирует под GTK+, конечно — ну так Qt у пряморуких тоже это делает. Жрёт память вагонами — ну а чего ещё ждать от хромоаппсов. Вот вытеснит эта члень внезапно классические десктопные приложения — и что тогда? Что тогда?.. FSF, понятное дело, так и будет дальше дрочить на GTK+, пока он окончательно не окуклится до нынешнего состояния Tk после перехода GNOME Shell на Aura, а остальные? QML тоже не выдержит, наверное. Про XUL и говорить нечего, его уже закапывают, а за ним подохнет и последний браузер Pale Moon, не выдержав темпов развития Web is the Platform.

//И не спрашивайте, зачем я поставил эту убогую CUA-шную проприетарщину. Затем же, зачем Яндекс.Браузер и прочие XnView — на потыкать.

 , , , ,

contra_sperm_spero ()

qtwebengine

Qt WebEngine на оффтопик есть только для msvc2013, значит под Linux Qt WebEngine нет вообще? Зачем вообще нужны установщики с mingw и Qt WebEngine, если «MinGW is not supported.»

P.S. когда-то накалякал прогу на этом вебэнжайне, не помню на какой версии, то ли на 5.3.2, то ли на 5.4. Сейчас поставил 5.4 на оффтопик, пишет ":-1: ошибка: Unknown module(s) in QT: webenginewidgets", что с mingw, что с msvc2013. Хотя я точно помню, что собирал эту прогу под виндой с mingw и заюзанным Qt WebEngine, исходники не трогал. Вот сейчас попробовал собрать, ругается, нет модуля и все тут.

 , ,

puding ()

emacs keyboard scheme в ненужностудии

inbefore lor isnt your personal army.

Я знаю, что всё это не нужно. Visual studio не нужен и ReSharper тоже, но иногда приходится использовать.

У кого есть аккаунт jetbrains, проголосуйте, пожалуйста, за поддержку клавиатурной схемы emacs в ReSharper: https://youtrack.jetbrains.com/issue/RSRP-445339

Мои руки настолько приросли к emacs, что без этого неудобно. На мелкомягких надежды нет.

 ,

pashazz ()

Возможен ли безболезненный переход на Linux для с++/Gamdev программиста?

Доброго времени суток. В который раз возникает желание перейти на Linux. Собственные аргументы за: - полная кастомизация внешнего вида - отсутствие вирусов - относительно стабильная работа (зависит от дистрибутива) - относительная простота апдейта (зависит от дистрибутива) - просто живой интерес.

Но при этом я являюсь с++/Gamedev программистом. Конечно 90% работы приходится на рабочий комп (а Linux хочется на домашний), но иногда и для себя что то хочется поделать, и работу на дом взять. Во всех основных разработках используется VisualStudio и тулзы, которые работают только под Windows. Домашний комп еще используется для серфинга, иногда для игр, иногда для «попрограмить для души» (кроме перечисленного выше все остальное весьма кроссплатформенно - андроид и питон).

Очень опасаюсь что в таких условиях переход слабо возможен, и будут постоянные недовольства софтом, постоянные юзания виртуалки (а смысл тогда переходить?) и прочее.

Отсюда вопросы: - а стоит ли вообще думать о переходе на линукс? - если стоит - как организовать работу с проектами, которые требуют VisualStudio? - не холивара ради - какой выбрать дистрибутив?

Для себя пока придумал только виртуалку с виндой, в которую прокинуты шары или диск с проектами +какой то скриптец, который из линуксов позволит мне запустить билд в виртуалке на вижуалстудии. Дистрибутив - Linux mint cinnamon (всегда нравился гном2).

На всякий случай - характеристики компа: core i3, 6 gb ram, intel graphics + gforce gt 540m На всякий случай - основной используемый софт: Total commander, Visual studio, svn/git, Opera, Photoshop.

Опыт работы и разработки в линуксах небольшой имеется.

 , ,

GavriKos ()