- Регистрация
- 06.11.2018
- Сообщения
- 11 789
- Благодарностей
- 5 721
- Баллы
- 113
В общем сломал весь мозг, нужны советы и примерчики
Задача в следующем. Нужно запустить параллельный поток и в нем получать параметры инстанса.
с запуском проблем нет. а вот как дошло до считывания параметров инстанса, пошел жесткий головняк.
итак по порядку.
сделал класс для прокидывания объектов инстанса и проджекта, так как в параллельную процедуру можно прокинуть только один объект.
сделал процедуру запуска параллельного потока и в ней же тестовый вывод параметров передаваемых объектов. тут проблем нет.
сделал сам параллельный поток , там вот все работает, кроме объекта instace. для пробы всунул скриншот инстанса. он работает.
результат работы
вот порт инстанса доступен, а другие параметры нет.
Возможно с инстансом надо работать по другому, так как ImageProcessingCropFromScreenshot нормально отработал в параллельном потоке, и просит всего навсего порт инстанса.
вот собственно и вопрос, как создать объект инстанса по его порту , аналогично функции ImageProcessingCropFromScreenshot для доступа к его параметрам ? сам я, не знаю куда копать.
Задача в следующем. Нужно запустить параллельный поток и в нем получать параметры инстанса.
с запуском проблем нет. а вот как дошло до считывания параметров инстанса, пошел жесткий головняк.
итак по порядку.
сделал класс для прокидывания объектов инстанса и проджекта, так как в параллельную процедуру можно прокинуть только один объект.
C#:
public class test1 // класс для передачи в паралельную функцию
{
public Instance instance;
public IZennoPosterProjectModel project;
}
C#:
public static void Test_Start(IZennoPosterProjectModel project, Instance instance )
{
test1 ss1 = new test1(); // создали новый объект
ss1.instance = instance; // заполнение
ss1.project = project; // заполнение
// тестовый вывод значений
string uu1= ss1.instance.Port.ToString();
ss1.project.SendInfoToLog("Port в обычной функции - " + uu1);
uu1= ss1.instance.ScreenResolution.Height.ToString();
ss1.project.SendInfoToLog("Height в обычной функции - " + uu1);
// запуск парралельного потока с передачей объекта
Thread myThread = new Thread(new ParameterizedThreadStart(Refresh) );
myThread.Start(ss1);
}
C#:
public static void Refresh(Object eee_my) // функция паралельного потока
{
test1 dd1 = (test1) eee_my; // приняли передаваемый объект
// тестовый вывод
string uu1= dd1.instance.Port.ToString();
dd1.project.SendInfoToLog("Port в паралельном потоке - " + uu1);
uu1= dd1.instance.ScreenResolution.Height.ToString();
dd1.project.SendInfoToLog("Height в паралельном потоке - " + uu1);
// тестовый скрин с инстанса
ZennoPoster.ImageProcessingCropFromScreenshot(dd1.instance.Port, "C:\\ResultImage.jpeg", 10, 10, 150, 250, "pixel");
}
вот порт инстанса доступен, а другие параметры нет.
Возможно с инстансом надо работать по другому, так как ImageProcessingCropFromScreenshot нормально отработал в параллельном потоке, и просит всего навсего порт инстанса.
вот собственно и вопрос, как создать объект инстанса по его порту , аналогично функции ImageProcessingCropFromScreenshot для доступа к его параметрам ? сам я, не знаю куда копать.