Jump to content

Primož Gabrijelčič

  • Content Count

  • Joined

  • Last visited

  • Days Won


Primož Gabrijelčič last won the day on March 6 2023

Primož Gabrijelčič had the most liked content!

Community Reputation

218 Excellent


Technical Information

  • Delphi-Version
    Delphi 10.2 Tokyo

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Primož Gabrijelčič

    ForEach runs only one "thread" at time

    Use it's .OnStop function (async) or .OnStopInvoke (synchronized to the owner thread).
  2. Primož Gabrijelčič

    ForEach runs only one "thread" at time

    ExecuteAndWait processes messages in the worker thread. You have to process messages in the thread that owns the parallel task (in this case the main thread).
  3. Primož Gabrijelčič

    ForEach runs only one "thread" at time

    Although, hmmmm, I would expect Parallel.ForEach to work in blocking mode without any message processing. I will look into that as soon as possible.
  4. Primož Gabrijelčič

    ForEach runs only one "thread" at time

    Messages are still not processed while parallel for is executing. Run Parallel.ForEach.NoWait.Execute. Process messages while ForEach is running.
  5. Primož Gabrijelčič

    ForEach runs only one "thread" at time

    See: OmniThreadLibrary and console
  6. Primož Gabrijelčič

    Calling Async from a thread causes an exception

    Yes, it fails because the owner (anonymous thread) is destroyed before the worker (Parallel.Async). You could also run into problems because the owner thread is not processing Windows messages, which is a requirement for threads that own OTL tasks. Not in this simple example, but as soon as you start sending messages towards the owner or using OnTerminate handlers you would run into trouble.
  7. Primož Gabrijelčič

    Calling Async from a thread causes an exception

    For starters - why are you running Async from a background thread and not from the main thread?
  8. Primož Gabrijelčič

    Looking forward to Delphi 12 Athens support

    Official Delphi 12-supporting release: https://github.com/gabr42/OmniThreadLibrary/releases/tag/release-3.07.10 It should also appear in GetIt in a day or two.
  9. Primož Gabrijelčič

    Looking forward to Delphi 12 Athens support

    Although not officially released, OTL supports Delphi 12. Just download the latest version from the github and you're good to go. Official release will follow in two weeks. Primož
  10. Primož Gabrijelčič

    Parallel.Pipeline & CreateProcess question

    I don't know. Show us the code.
  11. Primož Gabrijelčič

    Messageloop in Omnithread task

    Use fController := CreateTask(TWorker.Create()).MsgWait.Run; Note the extra (). I don't know why, but compiler requires them.
  12. Primož Gabrijelčič

    Record as result for BackgroundWorker

    This should work just fine, I wrote a very similar code today and there were no problems: FWorker := Parallel.BackgroundWorker.NumTasks(1) .Execute( procedure (const workItem: IOmniWorkItem) var result: TTextBoxDetectorResults; begin var data := workItem.Data.ToRecord<TTextBoxDetectorData>; result := FAnalyzer_Asy.Analyze(data); workItem.Result := TOmniValue.FromRecord<TTextBoxDetectorResults>(result); end) .OnRequestDone_Asy( procedure (const Sender: IOmniBackgroundWorker; const workItem: IOmniWorkItem) begin var results := workItem.Result.ToRecord<TTextBoxDetectorResults>; OnAnalyzed_Asy(Self, workItem.UniqueID, results); end) You will have to put together a reproducible test case.
  13. Primož Gabrijelčič

    Async/Await with updating visual controls

    Yes, like that, but use TThread.Queue. There's no need to block the worker thread while memo is being updated.
  14. Primož Gabrijelčič

    Hands-On Design Patterns with Delphi

    The same goes for Packt. They sell books for $5 (action!) without asking. They even created a monstrosity which combines both my books together and they are selling it separately (again, without asking). But they did manage to make me more money than my self-published OmniThreadLibrary book, even though their commision is much higher than LeanPubs. So they do sell many books.
  15. Primož Gabrijelčič

    Hands-On Design Patterns with Delphi

    Mixed. They do their job, but you can definitely tell that it is an Indian team behind. Everything is "yes, of course" and then maybe something happens. Or maybe not. Plus they are very set in some formulaic ways - if you want to write a book, it has to fall into some already defined slot for which they know how they want organize it and then they insist on their way (how the content should be structured, what is allowed and what not etc). That is helpful, but also limiting and frustrating. Most of the time it works the best if you also say "yes, of course" and then do it in your own way. 🙂 Technical staff and editors are mediocre, at best. They definitely will not catch all errors. So - if you are looking for a perfect partner, they are not the one. If, however, you can just say "eh, whatever" from time to time and move on, they work just fine. They do pay on time, though. As for the other publishing houses, I have no idea.