मैं अपनी कंपनी के आवेदन के लिए एक ही लाइब्रेरी का उपयोग कर रहा हूं और जहां तक मुझे पता है, http://wp7sqlite.codeplex.com (under Some Recommendations) पर भी दस्तावेज किया गया है, यदि आप कनेक्शन बंद करते हैं तो आपको इसे फिर से बनाना होगा।
== अतिरिक्त टिप्पणियाँ ==
मैं त्रुटि के कारण नीचे ट्रैक करने के बाद, एक फिक्स बनाया है और हमारे आवेदन में यह परीक्षण कर रहा हूँ। संक्षेप में, समुदाय को बंद करने के लिए .CSharpSqlite लाइब्रेरी को WP7 पर, लेखक ने WP7 IsolatedStorageFileStream के आस-पास एक फ़ाइलस्ट्रीम रैपर लिखा था। जब एक डीबी खोला जाता है, तो डीबी फाइल स्ट्रीम खोला जाता है और CSharpSqlite द्वारा पढ़ और बंद किया जाता है। लेकिन स्ट्रीम के लिए फ़ाइल पथ मैपिंग एक शब्दकोश में इस स्ट्रीम के लिए एक हैंडल भी संग्रहीत किया जाता है। जब दूसरी बार एक डीबी खोला जाता है, तो स्ट्रीम को हैंडल पुनर्प्राप्त किया जाता है लेकिन चूंकि यह बंद हो जाता है (मुझे लगता है कि, अभी तक सत्यापित नहीं हुआ है) डीबी खोलने में विफल रहता है।
मैं अगर तुम source code Community.CsharpSqlite.FileStream में निम्न परिवर्तन है मेरे परिवर्तन wp7sqlite.codeplex.com परियोजना के लिए तैनात किया पाने के लिए प्रयास करेगा, लेकिन इस बीच में
परिवर्तन
public FileStream(string path, FileMode mode, FileAccess access, FileShare share, int unused)
{
IsolatedStorageFileStream handler = null;
if (FileStream.HandleTracker.TryGetValue(path, out handler))
{
_internal = handler;
}
else
{
if (mode == FileMode.Create || mode == FileMode.CreateNew)
{
_internal = IsolatedStorageIO.Default.CreateFile(path);
}
else
{
_internal = IsolatedStorageIO.Default.OpenFile(path, FileMode.OpenOrCreate);
}
FileStream.HandleTracker.Add(path, _internal);
}
}
से
public FileStream(string path, FileMode mode, FileAccess access, FileShare share, int unused)
{
IsolatedStorageFileStream handler = null;
if(FileStream.HandleTracker.TryGetValue(path, out handler))
{
_internal = handler;
if(!_internal.CanRead)
{
FileStream.HandleTracker.Remove(path);
CreateOpenNewFile(path, mode);
}
} else {
CreateOpenNewFile(path, mode);
}
}
private void CreateOpenNewFile(string path, FileMode mode)
{
if(mode == FileMode.Create || mode == FileMode.CreateNew)
{
_internal = IsolatedStorageIO.Default.CreateFile(path);
} else {
try {
_internal = IsolatedStorageIO.Default.OpenFile(path, FileMode.OpenOrCreate);
} catch(Exception ex) {
var v = ex;
}
}
FileStream.HandleTracker.Add(path, _internal);
}
लिए यह पहली बार मैं डिबग करने का प्रयास कर रहा हूँ और एक ओपन सोर्स प्रोजेक्ट में योगदान है। इन परिवर्तनों पर किसी भी टिप्पणी या विचारों की बहुत सराहना की जाएगी।
अलास्डेयर।
100 से अधिक प्रश्नों के साथ आपको पता होना चाहिए कि अब तक अपनी पोस्ट कैसे प्रारूपित करें, http://stackoverflow.com/editing-help और देखें। – BoltClock