2016-06-01 5 views
-2

Einer meiner Kollegen dies hatte den Code untenDateTime.Now.Ticks gibt gleichen Tick-Wert

foreach (GridViewRow grv in grvCatalogUpload.Rows) 
{ 
    Label lblVariantName = (Label)grv.FindControl("lblVariantName"); 
    Label lblDesciption = (Label)grv.FindControl("lblDesciption"); 

    //...get all controls from grid..// 

    ent = new TempVariantMst(); 


    string fpath = string.Empty; 
    string extension = string.Empty; 
    string fileName = string.Empty; 
    fpath = ViewState[vs_DirName].ToString() + "//" + lblImageName.Text; 

    extension = Path.GetExtension(fpath); 

    string tick = string.Empty; 
    tick = DateTime.Now.Ticks.ToString(); 

    //-------------same tick on 3rd,4th iteration---------------------// 

    fileName = tick+ extension; 

    //-------------same tick on 3rd,4th iteration---------------------// 

    logger.ErrorFormat("fpath, Details error:{0}{1} ", Environment.NewLine, fpath); 
    logger.ErrorFormat("Server.MapPath(FolderPath + fileName), Details error:{0}{1} ", Environment.NewLine, Server.MapPath("~/" + FolderPath + fileName)); 
    System.IO.File.Copy(fpath, Server.MapPath("~/" + FolderPath + fileName)); 

    ent.ImagePath = fileName; 
    //...set ent..// 

    adminService = new AdminService(); 
    adminService.InsertTempVariantMst(ent); 

} 

ich das gleiche Problem here gesehen habe issue.Please zu überprüfen aber die Antworten dort lassen vermuten, dass die Prozessorgeschwindigkeit Fast und damit Tick-Wert ändert sich nicht zwischen Iterationen.

Hier speichern wir eine Datei und fügen auch Daten in DB ein, die mehr Zeit benötigen und daher sollte der Tick-Wert anders sein, was nicht ist. Als temporäre Lösung haben wir den Gridview-Zeilenindex mit dem Tick

hinzugefügt
+4

Zeigen Sie nur den Code an, mit dem Sie Probleme haben. Das ist verdammt viel irrelevanter Code, den jemand durchsehen kann. –

+0

Bitte geben Sie eine [mcve] –

+0

Wenn Sie eine eindeutige Kennung möchten, verwenden Sie einfach "Guid.NewGuid" anstatt Ticks zu verwenden. – Baldrick

Antwort

0

Ich würde vorschlagen, Sie verwenden eine GUID anstelle von DateTime.Ticks, um Ihren eindeutigen Namen zu erhalten - andernfalls werden Sie Konflikte bekommen, wenn der DB-Code schneller als erwartet ausgeführt wird.

Etwas wie:

fileName = Guid.NewGuid().ToString() + grv.RowIndex.ToString() + extension; 

Dies wird Ihnen eine garantierte eindeutigen Dateinamen geben.

+0

GUID ist länger als Ticks zu speichern und auch das ist keine Lösung für mein Problem .. mein Problem ist "Zecken sind doppelt" und nicht "Was soll ich für einen eindeutigen Bezeichner verwenden?" ticks + rowindex funktioniert gut für mich .. – vatsal

Verwandte Themen