This sounds like a perfect situation for using Microsoft's Reactive Extensions (NuGet "Rx-WinForms"). 
Your code would look something like this:
var query =
    from item in this.lstbxItems.Items.ToObservable()
    from result in Observable.Start(() => ProcessItem(item))
    select new { item, result };
IDisposable subscription =
    query
        .ObserveOn(this) /* marshals to UI-thread */
        .Subscribe(x =>
        {
            /* do something with each `x.item` & `x.result`
            as soon as they are asyncronously computed */
        });
If you needed to stop the computation before it completes naturally you can just call subscription.Dispose().