using System ;
using System. Collections. Generic ;
using System. Linq ;
using System. Text ;
using System. Threading. Tasks ;
namespace ConsoleAppNET7
{
public class UploadFile
{
static UploadFile ( )
{
Task. Run ( ( ) =>
{
while ( true )
{
try
{
Delegate[ ] delegates = ImgCalcAmount. GetInvocationList ( ) ;
Console. Out. WriteLine ( "注册事件数" + delegates. Length) ;
}
catch ( Exception ex)
{
Console. WriteLine ( "事件数量为0,获取异常," + ex. Message) ;
break ;
}
Thread. Sleep ( 100 ) ;
}
} ) ;
}
public static event EventHandler< string > ImgCalcAmount;
public static async Task< Dictionary< string , string > > UploadFileWork ( string html, string articleId, string user)
{
Dictionary< string , string > dict = new Dictionary< string , string > ( ) ;
await Task. Delay ( 100 ) ;
int count = int . Parse ( articleId. Last ( ) . ToString ( ) ) + 1 ;
for ( int i = 0 ; i < count; i++ )
{
if ( count % 2 == 0 )
{
await Task. Delay ( 3000 ) ;
}
if ( count % 3 == 0 )
{
await Task. Delay ( 1000 ) ;
}
ImgCalcAmount?. Invoke ( 1 , articleId) ;
}
return dict;
}
}
}
using System ;
using System. Collections. Generic ;
using System. Linq ;
using System. Text ;
using System. Threading. Tasks ;
namespace ConsoleAppNET7
{
internal class BusinessTest
{
public static async Task PublishArticle ( string articleId)
{
short imgAmount = 0 ;
EventHandler< string > action = ( o, e) =>
{
if ( e == articleId)
{
imgAmount = ( short ) ( imgAmount + 1 ) ;
}
} ;
UploadFile. ImgCalcAmount += action;
await UploadFile. UploadFileWork ( "文章内容html" , articleId, "李斯" ) ;
UploadFile. ImgCalcAmount -= action;
Console. WriteLine ( $" {
DateTime. Now. ToString ( "HH:mm:ss.fff" ) } ,文章 {
articleId } ,小图片数 {
imgAmount } " ) ;
}
}
}
using ClassLibrary. Tool ;
using ConsoleAppNET7 ;
Console. WriteLine ( "Hello, World!" ) ;
for ( int i = 0 ; i < 10 ; i++ ) {
BusinessTest. PublishArticle ( "1000" + i) ;
}
Task. Delay ( 2000 ) . Wait ( ) ;
for ( int i = 0 ; i < 10 ; i++ )
{
BusinessTest. PublishArticle ( "2000" + i) ;
}
Console. WriteLine ( "程序结束----" ) ;
Console. ReadKey ( ) ;