diff --git a/bar.go b/bar.go index 09e1b61..dfe648c 100644 --- a/bar.go +++ b/bar.go @@ -247,7 +247,7 @@ select { case b.operateState <- func(s *bState) { s.current += int64(n) - if s.current >= s.total { + if s.current >= s.total && !s.toComplete { s.current = s.total s.toComplete = true go b.forceRefresh() @@ -412,9 +412,12 @@ } func (b *Bar) forceRefresh() { - select { - case b.forceRefreshCh <- time.Now(): - case <-b.shutdown: + for { + select { + case b.forceRefreshCh <- time.Now(): + case <-b.shutdown: + return + } } }