Если у меня есть что нить:Вопросы о многопоточности
Thread sendMessage = new Thread(new ThreadStart(timer.Start()));
воли, событие Tick таймера будет в основном потоке или на резьбе SendMessage?
Edit: У меня есть очереди, и я хочу, чтобы каждый х milisecond таймер будет тикать и программа из очереди массивов из очереди, но это мой код:
Thread sendMessage = new Thread(new ThreadStart(startThreadTimer));
public Queue<Array> messageQueue = new Queue<Array>();
System.Threading.Timer timer;
private void startThreadTimer()
{
System.Threading.TimerCallback cb = new System.Threading.TimerCallback(checkIfQueue);
timer = new System.Threading.Timer(cb, null, 4000, 30);
}
private static void checkIfQueue(object obj)
{
}
и я могу 't вызывать не статический метод или использовать не статическое поле из checkIfQueue, и оно должно быть статическим, что я могу сделать?
Edit: Вот код, который один из вас послал меня, я cahnged его так Fitts к своей цели, будет ли он работать?
public ConcurrentQueue<Array> messageQueue = new ConcurrentQueue<Array>();
public void Example()
{
var thread = new Thread(
() =>
{
while (true)
{
Array array;
byte[] byteArray = {};
if (messageQueue.Count > 0)
{
messageQueue.TryDequeue(out array);
foreach (byte result in array)
{
byteArray[byteArray.Length] = result;
}
controllernp.Write(byteArray, 0, 100);
}
Thread.Sleep(30);
}
});
thread.IsBackground = true;
thread.Start();
}
Этого не будет нигде. Вы не можете запустить программу, пока не будете писать код, который компилируется. –
@ Ханс - такое отношение на самом деле не помогает. Вы могли бы хотя бы указать, какая часть программы неправильная, а не просто душ. – Dismissile
@ Dis - все это неправильно. Я не могу разумно ответить на вопрос, основанный на коде, который не может работать. –