@@ -328,7 +328,7 @@ public void SetQuoteSystem(QuoteSystemStatus status, QuoteSystem system)
328
328
if ( IsQuoteSystemReadyForParse && ProjectState == ProjectState . NeedsQuoteSystemConfirmation )
329
329
{
330
330
m_quoteSystem = system ;
331
- DoQuoteParse ( ) ;
331
+ DoQuoteParseAsync ( ) ;
332
332
}
333
333
else if ( ( quoteSystemChanged && ! quoteSystemBeingSetForFirstTime ) ||
334
334
( QuoteSystemStatus == QuoteSystemStatus . Reviewed &&
@@ -1344,7 +1344,7 @@ private void InitializeLoadedProject()
1344
1344
m_usxPercentComplete = 100 ;
1345
1345
if ( QuoteSystem == null )
1346
1346
{
1347
- GuessAtQuoteSystem ( ) ;
1347
+ GuessAtQuoteSystemAsync ( ) ;
1348
1348
UpdateControlFileVersion ( ) ;
1349
1349
return ;
1350
1350
}
@@ -1463,55 +1463,38 @@ private void ParseAndSetBooks(IEnumerable<UsxDocument> books, IStylesheet styles
1463
1463
ParseAndIncludeBooks ( books , stylesheet ) ;
1464
1464
}
1465
1465
1466
- private void ParseAndIncludeBooks ( IEnumerable < UsxDocument > books , IStylesheet stylesheet , Action < BookScript > postParseAction = null )
1466
+ private async Task ParseAndIncludeBooks ( IEnumerable < UsxDocument > books , IStylesheet stylesheet , Action < BookScript > postParseAction = null )
1467
1467
{
1468
1468
if ( Versification == null )
1469
1469
throw new NullReferenceException ( "What!!!" ) ;
1470
1470
ProjectState = ProjectState . Initial | ( ProjectState & ProjectState . WritingSystemRecoveryInProcess ) ;
1471
- var usxWorker = new BackgroundWorker { WorkerReportsProgress = true } ;
1472
- usxWorker . DoWork += UsxWorker_DoWork ;
1473
- usxWorker . RunWorkerCompleted += UsxWorker_RunWorkerCompleted ;
1474
- usxWorker . ProgressChanged += UsxWorker_ProgressChanged ;
1475
-
1476
- object [ ] parameters = { books , stylesheet , postParseAction } ;
1477
- usxWorker . RunWorkerAsync ( parameters ) ;
1471
+ await Task . Run ( ( ) => { UsxParse ( books , stylesheet , postParseAction ) ; } ) ;
1478
1472
}
1479
1473
1480
- private void UsxWorker_DoWork ( object sender , DoWorkEventArgs e )
1474
+ private void UsxParse ( IEnumerable < UsxDocument > books , IStylesheet stylesheet , Action < BookScript > postParseAction = null )
1481
1475
{
1482
- var parameters = ( object [ ] ) e . Argument ;
1483
- var books = ( IEnumerable < UsxDocument > ) parameters [ 0 ] ;
1484
- var stylesheet = ( IStylesheet ) parameters [ 1 ] ;
1485
- var postParseAction = parameters . Length > 2 ? ( Action < BookScript > ) parameters [ 2 ] : null ;
1486
-
1487
- var backgroundWorker = ( BackgroundWorker ) sender ;
1488
-
1489
- var parsedBooks = UsxParser . ParseBooks ( books , stylesheet , i => backgroundWorker . ReportProgress ( i ) ) ;
1476
+ var parsedBooks = UsxParser . ParseBooks ( books , stylesheet , i =>
1477
+ {
1478
+ m_usxPercentComplete = i ;
1479
+ var pe = new ProgressChangedEventArgs ( PercentInitialized , null ) ;
1480
+ OnReport ( pe ) ;
1481
+ } ) ;
1490
1482
1491
1483
if ( postParseAction != null )
1492
1484
{
1493
1485
foreach ( var book in parsedBooks )
1494
1486
postParseAction ( book ) ;
1495
1487
}
1496
- e . Result = parsedBooks ;
1497
- }
1498
-
1499
- private void UsxWorker_RunWorkerCompleted ( object sender , RunWorkerCompletedEventArgs e )
1500
- {
1501
- if ( e . Error != null )
1502
- throw e . Error ;
1503
-
1504
- var bookScripts = ( List < BookScript > ) e . Result ;
1505
1488
1506
- foreach ( var bookScript in bookScripts )
1489
+ foreach ( var bookScript in parsedBooks )
1507
1490
{
1508
1491
// This code is an attempt to figure out how we are getting null reference exceptions when using the objects in the list (See PG-275 & PG-287)
1509
1492
if ( bookScript ? . BookId == null )
1510
1493
{
1511
- var nonNullBookScripts = bookScripts . Where ( b => b != null ) . Select ( b => b . BookId ) ;
1494
+ var nonNullBookScripts = parsedBooks . Where ( b => b != null ) . Select ( b => b . BookId ) ;
1512
1495
var nonNullBookScriptsStr = Join ( ";" , nonNullBookScripts ) ;
1513
1496
var initialMessage = bookScript == null ? "BookScript is null." : "BookScript has null BookId." ;
1514
- throw new ApplicationException ( $ "{ initialMessage } Number of BookScripts: { bookScripts . Count } . " +
1497
+ throw new ApplicationException ( $ "{ initialMessage } Number of BookScripts: { parsedBooks . Count } . " +
1515
1498
$ "BookScripts which are NOT null: { nonNullBookScriptsStr } ") ;
1516
1499
}
1517
1500
@@ -1520,12 +1503,12 @@ private void UsxWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEvent
1520
1503
1521
1504
if ( m_books . Any ( ) )
1522
1505
{
1523
- foreach ( var book in bookScripts )
1506
+ foreach ( var book in parsedBooks )
1524
1507
IncludeExistingBook ( book ) ;
1525
1508
}
1526
1509
else
1527
1510
{
1528
- m_books . AddRange ( bookScripts ) ;
1511
+ m_books . AddRange ( parsedBooks ) ;
1529
1512
m_projectMetadata . ParserVersion = kParserVersion ;
1530
1513
if ( m_books . All ( b => IsNullOrEmpty ( b . PageHeader ) ) )
1531
1514
ChapterAnnouncementStyle = ChapterAnnouncement . ChapterLabel ;
@@ -1535,79 +1518,57 @@ private void UsxWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEvent
1535
1518
}
1536
1519
1537
1520
if ( QuoteSystem == null )
1538
- GuessAtQuoteSystem ( ) ;
1521
+ GuessAtQuoteSystemAsync ( ) ;
1539
1522
else if ( IsQuoteSystemReadyForParse )
1540
- DoQuoteParse ( bookScripts . Select ( b => b . BookId ) ) ;
1523
+ DoQuoteParseAsync ( parsedBooks . Select ( b => b . BookId ) ) ;
1541
1524
}
1542
1525
1543
- private void UsxWorker_ProgressChanged ( object sender , ProgressChangedEventArgs e )
1544
- {
1545
- m_usxPercentComplete = e . ProgressPercentage ;
1546
- var pe = new ProgressChangedEventArgs ( PercentInitialized , null ) ;
1547
- OnReport ( pe ) ;
1548
- }
1549
-
1550
- private void GuessAtQuoteSystem ( )
1526
+ private async Task GuessAtQuoteSystemAsync ( )
1551
1527
{
1552
1528
ProjectState = ProjectState . UsxComplete | ( ProjectState & ProjectState . WritingSystemRecoveryInProcess ) ;
1553
- var guessWorker = new BackgroundWorker { WorkerReportsProgress = true } ;
1554
- guessWorker . DoWork += GuessWorker_DoWork ;
1555
- guessWorker . RunWorkerCompleted += GuessWorker_RunWorkerCompleted ;
1556
- guessWorker . ProgressChanged += GuessWorker_ProgressChanged ;
1557
- guessWorker . RunWorkerAsync ( ) ;
1529
+ await Task . Run ( GuessAtQuoteSystem ) ;
1558
1530
}
1559
1531
1560
- private void GuessWorker_DoWork ( object sender , DoWorkEventArgs e )
1561
- {
1562
- e . Result = QuoteSystemGuesser . Guess ( ControlCharacterVerseData . Singleton , m_books , Versification , out _ ,
1563
- sender as BackgroundWorker ) ;
1564
- }
1565
-
1566
- private void GuessWorker_RunWorkerCompleted ( object sender , RunWorkerCompletedEventArgs e )
1532
+ private void GuessAtQuoteSystem ( )
1567
1533
{
1568
- if ( e . Error != null )
1569
- throw e . Error ;
1570
-
1571
- SetQuoteSystem ( QuoteSystemStatus . Guessed , ( QuoteSystem ) e . Result ) ;
1534
+ var quoteSystem = QuoteSystemGuesser . Guess ( ControlCharacterVerseData . Singleton , m_books , Versification , out _ ,
1535
+ i =>
1536
+ {
1537
+ m_guessPercentComplete = i ;
1538
+ var pe = new ProgressChangedEventArgs ( PercentInitialized , null ) ;
1539
+ OnReport ( pe ) ;
1540
+ } ) ;
1572
1541
1542
+ SetQuoteSystem ( QuoteSystemStatus . Guessed , quoteSystem ) ;
1573
1543
Save ( ) ;
1574
1544
}
1575
1545
1576
- private void GuessWorker_ProgressChanged ( object sender , ProgressChangedEventArgs e )
1577
- {
1578
- m_guessPercentComplete = e . ProgressPercentage ;
1579
- var pe = new ProgressChangedEventArgs ( PercentInitialized , null ) ;
1580
- OnReport ( pe ) ;
1581
- }
1582
-
1583
- private void DoQuoteParse ( IEnumerable < string > booksToParse = null )
1546
+ private async Task DoQuoteParseAsync ( IEnumerable < string > booksToParse = null )
1584
1547
{
1585
1548
m_projectMetadata . ParserVersion = kParserVersion ;
1586
1549
ProjectState = ProjectState . Parsing ;
1587
- var quoteWorker = new BackgroundWorker { WorkerReportsProgress = true } ;
1588
- quoteWorker . DoWork += QuoteWorker_DoWork ;
1589
- quoteWorker . RunWorkerCompleted += QuoteWorker_RunWorkerCompleted ;
1590
- quoteWorker . ProgressChanged += QuoteWorker_ProgressChanged ;
1591
- object [ ] parameters = { booksToParse } ;
1592
- quoteWorker . RunWorkerAsync ( parameters ) ;
1593
- }
1594
-
1595
- private void QuoteWorker_DoWork ( object sender , DoWorkEventArgs e )
1596
- {
1597
- var bookIds = ( IEnumerable < string > ) ( ( object [ ] ) e . Argument ) [ 0 ] ;
1598
- QuoteParser . ParseProject ( this , sender as BackgroundWorker , bookIds ) ;
1550
+ await Task . Run ( ( ) => { DoQuoteParse ( booksToParse ) ; } ) ;
1599
1551
}
1600
1552
1601
- private void QuoteWorker_RunWorkerCompleted ( object sender , RunWorkerCompletedEventArgs e )
1553
+ private void DoQuoteParse ( IEnumerable < string > bookIds )
1602
1554
{
1603
- if ( e . Error != null )
1555
+ try
1556
+ {
1557
+ QuoteParser . ParseProject ( this , i =>
1558
+ {
1559
+ m_quotePercentComplete = i ;
1560
+ var pe = new ProgressChangedEventArgs ( PercentInitialized , null ) ;
1561
+ OnReport ( pe ) ;
1562
+ } , bookIds ) ;
1563
+ }
1564
+ catch ( Exception e )
1604
1565
{
1605
1566
#if DEBUG
1606
1567
Exception innerException ;
1607
- if ( ( innerException = e . Error ? . InnerException ) != null )
1568
+ if ( ( innerException = e . InnerException ) != null )
1608
1569
Debug . WriteLine ( innerException . Message + innerException . StackTrace ) ;
1609
1570
#endif
1610
- throw e . Error ;
1571
+ throw ;
1611
1572
}
1612
1573
1613
1574
ProjectState = ProjectState . QuoteParseComplete ;
@@ -1628,13 +1589,6 @@ private void QuoteWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEve
1628
1589
QuoteParseCompleted ? . Invoke ( this , new EventArgs ( ) ) ;
1629
1590
}
1630
1591
1631
- private void QuoteWorker_ProgressChanged ( object sender , ProgressChangedEventArgs e )
1632
- {
1633
- m_quotePercentComplete = e . ProgressPercentage ;
1634
- var pe = new ProgressChangedEventArgs ( PercentInitialized , null ) ;
1635
- OnReport ( pe ) ;
1636
- }
1637
-
1638
1592
public int MaxProjectNameLength => Writer . GetMaxProjectNameLength ( this ) ;
1639
1593
1640
1594
public BookScript LoadExistingBookIfPossible ( string bookId )
0 commit comments