Вопрос по общему коду

Midnight

Client
Регистрация
28.02.2016
Сообщения
236
Благодарностей
114
Баллы
43
Привет всем. У меня в шаблоне есть потребность постоянно проверять работоспособность прокси, для этого я каждый раз добавляю такой кубик
C#:
string proxy =  project.Variables["proxy"].Value;
start:
string response = ZennoPoster.HttpGet("https://www.google.com/", proxy, "UTF-8", ResponceType.BodyOnly, 10000);
if (String.IsNullOrEmpty(response))
{
    proxy = project.Lists["proxy"].GetItem("0", true);
    project.Lists["proxy"].Add(proxy);
    goto start;
}
project.Variables["proxy"].Value = proxy;
instance.SetProxy(proxy);
Это сильно загромождает шаблон, поэтому решено было перенести проверку в общий код. Я в общем коде ничего не понимаю почти, собрал из примеров на форуме такой код
C#:
namespace ZennoLab.OwnCode
{
    /// <summary>
    /// A simple class of the common code
    /// </summary>
    public class CommonCode
    {
        /// <summary>
        /// Lock this object to mark part of code for single thread execution
        /// </summary>
        public static object SyncObject = new object();

        // Insert your code here
    }
    public class ProxyChecker
    {
        public static void CheckAndSet(IZennoPosterProjectModel project, Instance instance)
        {
            string proxy =  project.Variables["proxy"].Value;
            start:
            string response = ZennoPoster.HttpGet("https://www.facebook.com/", proxy, "UTF-8", ResponceType.BodyOnly, 10000);
            if (String.IsNullOrEmpty(response))
            {
                proxy = project.Lists["proxy"].GetItem("0", true);
                project.Lists["proxy"].Add(proxy);
                goto start;
            }
            project.Variables["proxy"].Value = proxy;
            instance.SetProxy(proxy);
        }
    }
}
Для вызова использую
C#:
ProxyChecker.CheckAndSet(project, instance);
Вроде все работает, но я читал что переменные в общем коде могут быть общими для всех потоков, и есть подозрение что из-за ошибки в коде значения переменных из одного потока могут присваиваться другому. Вот и хочу узнать, нет ли такого косяка в моем коде и можно ли его со спокойствием юзать?
 

volody00

Client
Регистрация
06.09.2016
Сообщения
792
Благодарностей
810
Баллы
93
Нормально все. Lock можно добавить для 25 строки
 
  • Спасибо
Реакции: Midnight

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)