예제 #1
0
 private void CrossJoinData(TInput2 passingRow)
 {
     if (!WasInMemoryTableLoaded)
     {
         InMemoryTarget.Wait();
         WasInMemoryTableLoaded = true;
     }
     foreach (TInput1 inMemoryRow in InMemoryData)
     {
         try
         {
             if (inMemoryRow != null && passingRow != null)
             {
                 TOutput result = CrossJoinFunc.Invoke(inMemoryRow, passingRow);
                 if (result != null)
                 {
                     Buffer.SendAsync(result).Wait();
                     LogProgress();
                 }
             }
         }
         catch (Exception e)
         {
             if (!ErrorHandler.HasErrorBuffer)
             {
                 throw e;
             }
             ErrorHandler.Send(e, string.Concat(ErrorHandler.ConvertErrorData <TInput1>(inMemoryRow), "  |--| ",
                                                ErrorHandler.ConvertErrorData <TInput2>(passingRow)));
         }
     }
 }
예제 #2
0
파일: CrossJoin.cs 프로젝트: whx76/etlbox
 internal override void CompleteBufferOnPredecessorCompletion()
 {
     InMemoryTarget.CompleteBufferOnPredecessorCompletion();
     PassingTarget.CompleteBufferOnPredecessorCompletion();
     Task.WaitAll(InMemoryTarget.Completion, PassingTarget.Completion);
     Buffer.Complete();
 }
예제 #3
0
파일: CrossJoin.cs 프로젝트: whx76/etlbox
 internal override void FaultBufferOnPredecessorCompletion(Exception e)
 {
     InMemoryTarget.FaultBufferOnPredecessorCompletion(e);
     PassingTarget.FaultBufferOnPredecessorCompletion(e);
     ((IDataflowBlock)Buffer).Fault(e);
 }