コード例 #1
0
                public void DoWork()
                {
                    while (true)
                    {
                        lock (source)
                        {
                            if (source.from < source.to && !source.abort)
                            {
                                index = source.from++;
                            }
                            else
                            {
                                lock (this)
                                {
                                    thread    = null;
                                    completed = true;
                                    if (--source.active == 0)
                                    {
                                        source.OnComplete();
                                    }
                                    return;
                                }
                            }
                        }

                        try
                        {
                            source.work(threadIndex, index, source);
                        }
                        catch (Exception e)
                        {
                            Util.Logging.Log(e);
                        }
                    }
                }