Jump to content



Photo

  • Please log in to reply
4 replies to this topic

#1 kInG aLeXo

kInG aLeXo

    Neowinian

  • Joined: 15-January 09

Posted 31 January 2013 - 10:39

Without risking the case of the 2 tasks running on the same thread and having them both stopped.

I want the first task to wait until another task finishes some action. After the second task is done with its action, it should wake the first task up and continue working from where it stopped. The first task should be waked up as well if the first task didn't do the action after a certain time.

Now, the major problem I am having is that since both are tasks, not threads, most solutions I found looks like they stop the thread, not the task only. So, it could be the case that both tasks be running on the same thread, and thus when I make the first task wait, both wait and it timeouts anyway.

Is there a clean solution around this ?

Thanks;


#2 articuno1au

articuno1au

    Neowinian Senior

  • Tech Issues Solved: 2
  • Joined: 20-March 11
  • Location: Brisbane, Australia

Posted 31 January 2013 - 10:44

Why aren't you threading the multiple tasks?

That would appear to grant greater performance and would fix the issue you're facing now O.o

Making the change would be extremely simple to do. .net is really built for multi-threading with ease.

Failing that, check out the Async and Await keywords added in .net 5, but honestly, threading is a better answer.

#3 OP kInG aLeXo

kInG aLeXo

    Neowinian

  • Joined: 15-January 09

Posted 31 January 2013 - 10:48

Why aren't you threading the multiple tasks?

That would appear to grant greater performance and would fix the issue you're facing now O.o

Making the change would be extremely simple to do. .net is really built for multi-threading with ease.

Failing that, check out the Async and Await keywords added in .net 5, but honestly, threading is a better answer.

Switching to threading would require re-debugging a lot of the code, and I thought using the thread pool of tasks would be better, as I could have tens or potentially hundreds of tasks running, most of which are not taking much cpu, but are either idle or doing network transfers.

#4 georgevella

georgevella

    Software Developer

  • Joined: 15-May 02

Posted 31 January 2013 - 11:10

Check the ContinueWith() and Wait*() methods on the Task class

MSDN

#5 Andre S.

Andre S.

    Asik

  • Tech Issues Solved: 11
  • Joined: 26-October 05

Posted 01 February 2013 - 14:48

Without risking the case of the 2 tasks running on the same thread and having them both stopped.

I want the first task to wait until another task finishes some action. After the second task is done with its action, it should wake the first task up and continue working from where it stopped. The first task should be waked up as well if the first task didn't do the action after a certain time.

If I understand you correctly, you should split the first task into two parts (two Task(T)s), so you can queue the second task after the first part, and queue the second part after the second task.