Как Вы правильно обновляете связанный с данными datagridview от фонового потока

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

  • Создать папку для настройки службы Docker через systemd

mkdir /etc/systemd/system/docker.service.d

  • Создать файл конфигурации службы в /etc/systemd/system/docker.service.d/http-proxy.conf и добавить следующее в новый создан файл
[Service]
 # NO_PROXY is optional and can be removed if not needed
 # Change proxy_url to your proxy IP or FQDN and proxy_port to your proxy port
 Environment="HTTP_PROXY=http://proxy_url:proxy_port" "NO_PROXY=localhost,127.0.0.0/8"
  • Перезагрузите systemctl, чтобы прочитать новые настройки

    sudo systemctl daemon-reload

  • Verify среда окружения правильно настроена

    sudo systemctl show docker --property Environment

  • Перезапустите службу докера, чтобы использовать обновленные параметры среды

    sudo systemctl restart docker

Теперь вы можете выполнить команду docker-compose на вашем компьютере, не получая сообщений об ошибках connection refused.

8
задан Michał Powaga 15 May 2013 в 07:08
поделиться

2 ответа

Я нашел этот класс на форуме, который работает. Просто используйте это вместо BindingList

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.ComponentModel;
using System.Threading;

namespace Utility
{
    public class ThreadedBindingList<T> : BindingList<T>
    {
        SynchronizationContext ctx = SynchronizationContext.Current;

        protected override void OnAddingNew(AddingNewEventArgs e)
        {

            if (ctx == null)
            {
                BaseAddingNew(e);
            }
            else
            {
                ctx.Send(delegate
                {
                    BaseAddingNew(e);
                }, null);
            }
        }
        void BaseAddingNew(AddingNewEventArgs e)
        {
            base.OnAddingNew(e);
        }
        protected override void OnListChanged(ListChangedEventArgs e)
        {
           // SynchronizationContext ctx = SynchronizationContext.Current;
            if (ctx == null)
            {
                BaseListChanged(e);
            }
            else
            {
                ctx.Send(delegate
                {
                    BaseListChanged(e);
                }, null);
            }
        }
        void BaseListChanged(ListChangedEventArgs e)
        {
            base.OnListChanged(e);
        }
    } 
}
14
ответ дан 5 December 2019 в 11:28
поделиться

Так как я потратил время, чтобы отформатировать образец для своих нужд, я мог бы также опубликовать его здесь как читабельный справочник. Ничего не изменилось, кроме форматирования.

using System.ComponentModel; 
using System.Threading;

namespace Utility 
{
  public class ThreadedBindingList : BindingList 
  {
    SynchronizationContext ctx = SynchronizationContext.Current;
    protected override void OnAddingNew(AddingNewEventArgs e)
    {
      if (ctx == null)
      {
        BaseAddingNew(e);
      }
      else
      {
        ctx.Send(delegate { BaseAddingNew(e); }, null);
      }
    }

    void BaseAddingNew(AddingNewEventArgs e)
    {
      base.OnAddingNew(e);
    }

    protected override void OnListChanged(ListChangedEventArgs e)
    {
      // SynchronizationContext ctx = SynchronizationContext.Current;
      if (ctx == null)
      {
        BaseListChanged(e);
      }
      else
      {
        ctx.Send(delegate { BaseListChanged(e); }, null);
      }
    }

    void BaseListChanged(ListChangedEventArgs e)
    {
      base.OnListChanged(e);
    }
  }
}
1
ответ дан 5 December 2019 в 11:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: