public static BlockingCollection<CheckMailBody> bc = new BlockingCollection<CheckMailBody>();
public static void AddMailWorker(String body, Exception ex)
{
try
{
CheckMailBody checkMailBody = new CheckMailBody( body, ex );
bc.Add( checkMailBody );
}
catch(Exception e)
{
CommonLog.ErrorLog( "AddMailWorker", e );
}
}
public static void StartMailWorker()
{
Task mailTask = Task.Factory.StartNew( async () =>
{
try
{
// Consume consume the BlockingCollection
while ( !bc.IsAddingCompleted )
{
CheckMailBody checkMailBody = bc.Take();
if(checkMailBody.ex != null)
CommonLog.InfoLog( "[StartMailWorker] checkMailBody body=" + checkMailBody.body + ", path=" + checkMailBody.ex.StackTrace, false );
else
CommonLog.InfoLog( "[StartMailWorker] checkMailBody body=" + checkMailBody.body, false );
await CommonUtil.SendMe( checkMailBody.body, checkMailBody.ex );
}
}
catch ( InvalidOperationException )
{
// An InvalidOperationException means that Take() was called on a completed collection
Console.WriteLine( "That's All!" );
}
} );
}
'C#(CSharp) > Etc' 카테고리의 다른 글
Simple and Powerful Debug function (0) | 2017.10.18 |
---|---|
Send mail by GMail (0) | 2017.08.07 |
윈도우 8 메트로 스타일 App Deploy 관련해서... (0) | 2015.04.08 |
Microsoft Visual Studio Installer in VS2013 (0) | 2015.03.21 |
Microsoft Visual Studio Installer Projects Support VS2013 (0) | 2015.03.21 |