поток с несколькими параметрами

Конечная точка указана как url, а не iam_url, как у вас есть.

Это работает для меня -

const  STTV1 = require('watson-developer-cloud/speech-to-text/v1');

let sttService = new STTV1({
  url: url,
  iam_apikey = apikey
});

37
задан John Saunders 12 August 2010 в 02:22
поделиться

7 ответов

Попробуйте использовать лямбда-выражение для захвата аргументов.

Thread standardTCPServerThread = 
  new Thread(
    unused => startSocketServerAsThread(initializeMemberBalance, arg, 60000)
  );
63
ответ дан 27 November 2019 в 04:12
поделиться

You need to wrap them into a single object.

Making a custom class to pass in your parameters is one option. You can also use an array or list of objects, and set all of your parameters in that.

11
ответ дан 27 November 2019 в 04:12
поделиться

Use the 'Task' pattern:

public class MyTask
{
   string _a;
   int _b;
   int _c;
   float _d;

   public event EventHandler Finished;

   public MyTask( string a, int b, int c, float d )
   {
      _a = a;
      _b = b;
      _c = c;
      _d = d;
   }

   public void DoWork()
   {
       Thread t = new Thread(new ThreadStart(DoWorkCore));
       t.Start();
   }

   private void DoWorkCore()
   {
      // do some stuff
      OnFinished();
   }

   protected virtual void OnFinished()
   {
      // raise finished in a threadsafe way 
   }
}
7
ответ дан 27 November 2019 в 04:12
поделиться

You can't. Create an object that contain params you need, and pass is it. In the thread function cast the object back to its type.

3
ответ дан 27 November 2019 в 04:12
поделиться

Вы можете взять массив объектов и передать его в поток. Передайте

System.Threading.ParameterizedThreadStart(yourFunctionAddressWhichContailMultipleParameters) 

в конструктор потока.

yourFunctionAddressWhichContailMultipleParameters(object[])

Вы уже установили все значения в objArray.

Вам необходимо abcThread.Start (objectArray)

1
ответ дан 27 November 2019 в 04:12
поделиться

You could curry the "work" function with a lambda expression:

public void StartThread()
{
    // ...
    Thread standardTCPServerThread = new Thread(
        () => standardServerThread.Start(/* whatever arguments */));

    standardTCPServerThread.Start();
}
0
ответ дан 27 November 2019 в 04:12
поделиться

Вот фрагмент кода, который использует подход с использованием массива объектов, упомянутый здесь пару раз.

    ...
    string p1 = "Yada yada.";
    long p2 = 4715821396025;
    int p3 = 4096;
    object args = new object[3] { p1, p2, p3 };
    Thread b1 = new Thread(new ParameterizedThreadStart(worker));
    b1.Start(args);
    ...
    private void worker(object args)
    {
      Array argArray = new object[3];
      argArray = (Array)args;
      string p1 = (string)argArray.GetValue(0);
      long p2 = (long)argArray.GetValue(1);
      int p3 = (int)argArray.GetValue(2);
      ...
    }>
12
ответ дан 27 November 2019 в 04:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: