- Регистрация
- 30.09.2016
- Сообщения
- 249
- Благодарностей
- 30
- Баллы
- 28
Приветствую!
Решал задачку целый день, не получилось
Хэлп
)
Нужно создать объект класса Person.
Чтобы объект был доступен из любого кубика проекта.
Чтобы объект был уникальным для каждого потока.
В процессе решения получилось 4 неверных варианта.
Вариант 1
Общий код:
1 снипет:
2 снипет:
Результат работы шаблона в 4 потока: http://prntscr.com/mgoc5s
Person.Age повторяются, не смотря на то, что были сгенерированы рэндомно.
Вариант 2
using:
1 снипет:
2 снипет:
Результат работы шаблона в 4 потока: http://prntscr.com/mgof20
Проект выполняется лишь иногда.
Вариант 3
Общий код:
1 снипет:
2 снипет:
Результат работы шаблона в 4 потока:
http://prntscr.com/mgohnr
http://prntscr.com/mgoia4
Person.Age повторяются, не смотря на то, что были сгенерированы рэндомно.
Вариант 4
Общий код:
1 снипет:
2 снипет:
Результат работы шаблона в 4 потока:
http://prntscr.com/mgolbr
Person.Age повторяются, не смотря на то, что были сгенерированы рэндомно.
Я даже dll написал с отдельным классом Person, со своим листом, с методами и без методов. Все то же самое...
Это ППЦ, товарищи... Я не прогер, я только учусь. Не пинайте сильно ) И так весь день промаялся )
Решал задачку целый день, не получилось


Нужно создать объект класса Person.
Чтобы объект был доступен из любого кубика проекта.
Чтобы объект был уникальным для каждого потока.
В процессе решения получилось 4 неверных варианта.
Вариант 1
Общий код:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;
using Newtonsoft;
namespace ZennoLab.OwnCode
{
public static class CommonCode
{
public static object SyncObject = new object();
}
public class Person
{
public int Age { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
}
}
Код:
Random rand = new Random();
Person person1 = new Person();
person1.Age = rand.Next(0,10000000);
project.Context["Person"] = person1;
Код:
Person person1 = project.Context["Person"];
project.SendInfoToLog(person1.Age.ToString(),true);
Thread.Sleep(10000);
Person.Age повторяются, не смотря на то, что были сгенерированы рэндомно.
Вариант 2
using:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;
using Newtonsoft;
namespace ZennoLab.OwnCode
{
public static class CommonCode
{
public static object SyncObject = new object();
[ThreadStatic] public static List<Person> PersonList = new List<Person>();
}
public class Person
{
public int Age { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
}
}
Код:
List<Person> PersonList = ZennoLab.OwnCode.CommonCode.PersonList;
Person person1 = new Person();
person1.Age = new Random().Next(0,1000000);
PersonList.Add(person1);
Код:
List<Person> PersonList = ZennoLab.OwnCode.CommonCode.PersonList;
Person person1 = PersonList[0];
project.SendInfoToLog(person1.Age.ToString(),true);
Thread.Sleep(5000);
Проект выполняется лишь иногда.
Вариант 3
Общий код:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;
using Newtonsoft;
namespace ZennoLab.OwnCode
{
public static class CommonCode
{
public static object SyncObject = new object();
}
public static class Person
{
public static int Age { get; set; }
public static string Name { get; set; }
public static string Surname { get; set; }
}
}
Код:
Random rand = new Random();
Person.Age = rand.Next(0,10000000);
Код:
project.SendInfoToLog(Person.Age.ToString(),true);
Thread.Sleep(10000);
http://prntscr.com/mgohnr
http://prntscr.com/mgoia4
Person.Age повторяются, не смотря на то, что были сгенерированы рэндомно.
Вариант 4
Общий код:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;
using Newtonsoft;
namespace ZennoLab.OwnCode
{
public static class CommonCode
{
public static object SyncObject = new object();
}
public class Person
{
public int Age { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
}
}
Код:
Random rand = new Random();
Person person1 = new Person();
List<Person> PersonList = new List<Person>();
person1.Age = rand.Next(0,10000000);
PersonList.Add(person1);
project.Context["PersonList"] = PersonList;
Код:
List<Person> PersonList = project.Context["PersonList"];
Person person1 = PersonList[0];
project.SendInfoToLog(person1.Age.ToString(),true);
Thread.Sleep(5000);
http://prntscr.com/mgolbr
Person.Age повторяются, не смотря на то, что были сгенерированы рэндомно.
Я даже dll написал с отдельным классом Person, со своим листом, с методами и без методов. Все то же самое...
Это ППЦ, товарищи... Я не прогер, я только учусь. Не пинайте сильно ) И так весь день промаялся )
Последнее редактирование: