Привет всем. У меня в шаблоне есть потребность постоянно проверять работоспособность прокси, для этого я каждый раз добавляю такой кубик
Это сильно загромождает шаблон, поэтому решено было перенести проверку в общий код. Я в общем коде ничего не понимаю почти, собрал из примеров на форуме такой код
Для вызова использую
Вроде все работает, но я читал что переменные в общем коде могут быть общими для всех потоков, и есть подозрение что из-за ошибки в коде значения переменных из одного потока могут присваиваться другому. Вот и хочу узнать, нет ли такого косяка в моем коде и можно ли его со спокойствием юзать?
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);