webForumDet fria alternativet

Skriva till en textfil från multipla trådar i C#

.NET

5 svar · 642 visningar · startad av OveRRidE

Medlem sedan feb. 200112 078 inlägg
Frågan#1

Jag har en applikation i C# som spawnar ett antal simultana Form's, och som sedan startar varje Form's instans metod "Run()" i separata trådar. Varje Run() kör i stort sett en while(true) och gör olika operationer som ska resultera i loggdata - datat ska till en gemensam textfil, alltså trådarna ska dela loggfil.

1. Ska man skriva till en gemensam kö och sen ha en egen tråd som flushar den till textfil på disk? Isåfall hur ska man implementera den?
2. Ska varje tråd få skriva till filen separat? Isf, hur får jag det trådsäkert?

Trådningen jag har idag fungerar bra, med de delar ju inte heller resurser så..

Hilfe! :D

Medlem sedan mars 20007 896 inlägg
#2

Du kan låta trådarna dela på en instans av log4net, som är tråd-säkert.

Eller har du redan en egen implementation av en logger? Jag hade avfärdat alternativ 2 hur som helst, håll logguppdateringarna i en trådsäker buffer - den skulle kunna ligga i en egen tråd och skriva till disk så fort data finns.

Medlem sedan feb. 200112 078 inlägg
#3

Jag har ingen egen implementation idag nej, förutom ett par rader med StreamWriter-kod.. ;)

Jag ska testa log4net - är den gratis?

Medlem sedan mars 20007 896 inlägg
#4

http://logging.apache.org/log4net/license.html ;)

Den är släppt under Apache License 2.0, vilket klassas som en open source-licens - så japp, den är gratis!

Medlem sedan jan. 20023 327 inlägg
#5

Japp, log4net är gratis!

Medlem sedan feb. 200112 078 inlägg
#6

Såg det när jag läste på lite nu. :) Nu ska jag bara hitta lite bra exempel - inte så sugen på att plugga klasser idag.

261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)