Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 19083|Отговор: 0

[Източник] ThreadStart и ParameterizedThreadStart са различни

[Копирай линк]
Публикувано в 14.11.2016 г. 10:25:44 ч. | | |
ThreadStart:

Делегатът на ThreadStart е дефиниран като void ThreadStart(), което означава, че изпълняваният метод не може да има параметри.
ThreadStart threadStart=new ThreadStart(Изчисли);
Thread thread=new Thread(threadStart);
нишка. Start();
Public void Изчисли()
   {
двоен диаметър=0.5;
Console.Write ("Площта на окръжността с диаметър {0} е {1}"Diameter,Diameter*Math.PI);
   }
       Тук използваме делегат, който дефинира тип ThreadStart, който дефинира метода, който нишката трябва да изпълни: Изчисли, при който се изчислява обиколката на кръг с диаметър 0.5, и изходи. Това представлява най-простия пример за многонишковост, което в много случаи е достатъчно




ParameterThreadStart:
ParameterThreadStart се дефинира като void ParameterizedThreadStart (object state), а функцията за стартиране на нишката, дефинирана с този делегат, може да приеме входен параметър, например:



ParameterizedThreadStart threadStart=new ParameterizedThreadStart(Calculate)
Thread thread=нов thread() ;
нишка. Старт (0.9);
public void Calculate(object arg)
{
двоен диаметър=двоен (arg);
Console.Write ("Площта на окръжността с диаметър {0} е {1}"Diameter,Diameter*Math.PI);
}

Методът Calculate има параметър на тип обект, въпреки че има само един параметър, и той също е тип обект, и все пак трябва да се конвертира при използването му, но за щастие могат да има параметри, и чрез комбиниране на няколко параметъра в клас и предаване на екземпляра на този клас като параметър, може да се постигне прехвърляне на множество параметри. Като какво:





клас AddParams
{
    публични международни а, б;

    публични AddParams(int numb1, int numb2)
    {
      a = numb1;
      b = numb2;
    }
}
#endregion

Програма на класа
{
    static void Main(string[] args)
    {
      Console.WriteLine ("***** Добавяне с обекти на нишки *****");
      Console.WriteLine("ID на нишката в Main(): {0}",
        Thread.CurrentThread.ManagedThreadId);

      AddParams ap = нови AddParams(10, 10);
      Thread t = new Thread(new ParameterizedThreadStart(Add));
      t.start(ap);
      Console.ReadLine();
    }

    #region Метод на добавяне
    static void Add(object data)
    {
      ако (данните са AddParams)
      {
        Console.WriteLine("ID на нишката в Main(): {0}",
          Thread.CurrentThread.ManagedThreadId);

        AddParams ap = (AddParams)data;
        Console.WriteLine("{0} + {1} е {2}",
          AP.A, AP.B, AP.A + AP.B);
      }
    }
    #endregion
}
}




Предишен:.net/c# Обхождане на потребителски аватари, вземи QQ аватари
Следващ:.net/c# изчислява възрастта на колата на шофьора
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com