小编Jas*_*ver的帖子

Stream.Dispose总是调用Stream.Close(和Stream.Flush)

如果我有以下情况:

StreamWriter MySW = null;
try
{
   Stream MyStream = new FileStream("asdf.txt");
   MySW = new StreamWriter(MyStream);
   MySW.Write("blah");
}
finally
{
   if (MySW != null)
   {
      MySW.Flush();
      MySW.Close();
      MySW.Dispose();
   }
}
Run Code Online (Sandbox Code Playgroud)

MySW.Dispose()即使提供了,我可以打电话并跳过关闭吗?是否存在任何不能按预期工作的Stream implament(如CryptoStream)?

如果没有,那么以下只是错误的代码:

using (StreamWriter MySW = new StreamWriter(MyStream))
{
   MySW.Write("Blah");
}
Run Code Online (Sandbox Code Playgroud)

.net c# using

62
推荐指数
3
解决办法
4万
查看次数

添加没有App.Config的DbProviderFactory

我在我的数据层(基于实体框架)中使用DbProviderFactories并使用SQLite作为我的数据库,但我没有App.Config来拥有以下代码:

<configuration>
  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SQLite"/>
      <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
    </DbProviderFactories>
  </system.data>
</configuration>
Run Code Online (Sandbox Code Playgroud)

相反,我想让我的数据层以编程方式放入.有人知道这样做的方法吗?

编辑:

这样做的原因是我使用IoC容器来选择数据层,而我的一些数据层不需要App.Config值,或者让它们与数据层紧密相连.

sqlite ado.net entity-framework dbproviderfactories

37
推荐指数
3
解决办法
2万
查看次数

Win32注册表是否是线程安全的?

如果我有两个进程访问给定的注册表项(例如HKLM),我应该将逻辑包装在互斥锁中吗?

registry winapi multithreading synchronization

17
推荐指数
2
解决办法
4187
查看次数

在Windows Mobile中管理网络状态的最佳方法

我有一个.NET Compact Framework 3.5程序,用作"偶尔连接"的业务线(LOB)应用程序.如果它可以看到在线Web服务,它将使用它进行数据访问,但如果网络连接丢失,它将使用本地缓存.

处理所有连接选项和状态更改的最佳方法是什么?

  • OpenNetCF的ConnectionManager类?
  • Microsoft.WindowsBile.State.SystemState?
  • API调用?

你如何理解WiFi,Cradle和GPRS之间的区别并使用最好的方法?

有人对此有任何指导吗?

c# compact-framework windows-mobile

6
推荐指数
1
解决办法
8006
查看次数

Guids的SQLite参数问题

我在使用参数时让Guids在SQLite(0.4.8)中匹配时遇到问题,当我使用类似的东西userGuid = 'guid here'工作时,但userGuid = @GuidHere事实并非如此.有人有主意吗?

创建:

CREATE TABLE Users
(
   UserGuid TEXT PRIMARY KEY NOT NULL, 
   FirstName TEXT, 
   LastName TEXT
)
Run Code Online (Sandbox Code Playgroud)

样本数据:

INSERT INTO Users (UserGuid, FirstName, LastName) 
VALUES ('e7bf9773-8231-44af-8d53-e624f0433943', 'Bobby', 'Bobston')
Run Code Online (Sandbox Code Playgroud)

删除声明(工作):

DELETE FROM Users WHERE UserGuid = 'e7bf9773-8231-44af-8d53-e624f0433943'
Run Code Online (Sandbox Code Playgroud)

删除声明(不工作):

DELETE FROM Users WHERE UserGuid = @UserGuid
Run Code Online (Sandbox Code Playgroud)

这是一个显示我的问题的C#程序:

using System;
using System.Data.SQLite;

namespace SQLite_Sample_App
{
    class Program
    {
        static void Main(string[] args)
        {
            Do();
            Console.Read();
        }

        static void Do()
        {
            using(SQLiteConnection MyConnection = new …
Run Code Online (Sandbox Code Playgroud)

c# sql database sqlite

5
推荐指数
1
解决办法
5123
查看次数

将异常记录到字符串的最佳方法是什么

任何人都有一个很好的方法将C#中的Exception输出到一个处理内部异常的字符串,等等?我相信每个开发者都对此有自己的意见,但我找不到我的旧版本,并想看看那里有哪些更好的.

这里有一个没有内部异常递归的例子:

var Message = String.Format("Exception Message: \n{0}\n\nStackTrace: \n{1}", ex.Message, ex.StackTrace);
Run Code Online (Sandbox Code Playgroud)

.net c#

5
推荐指数
1
解决办法
1569
查看次数

网格,视图框和画布

好的,我有Grid一个网页浏览器的"自动尺寸".在那里,我有一个Canvas绘制形状的形状.我想要的是画布'拉伸'来填充页面.我尝试使用ViewboxSilverlight 3 10/09 Toolkit中的一个,但它似乎没有填满网格中的所有空间,只有当我给它一个精确的像素数时才有效.

有没有人有任何想法?

示例XAML:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>

   <toolkit:Viewbox Stretch="Fill">
      <Canvas Width="617.589" Height="876.934">
          <Polygon StrokeThickness="3.0" Stroke="#ff000000" Fill="White" StrokeMiterLimit="1.0" Points=" 395.320,604.854 395.320,604.854 335.696,600.207 311.449,600.365 287.188,600.504 221.110,604.854 221.110,604.854 221.110,345.832 221.110,345.832 278.372,350.370 309.237,350.320 340.106,350.279 395.320,345.832 395.320,345.832 395.320,604.854 " />
          <Polygon StrokeThickness="3.0" Stroke="#ff000000" Fill="White" StrokeMiterLimit="1.0" Points=" 420.576,870.950 420.576,870.950 348.925,875.434 308.134,875.434 267.351,875.434 197.958,870.950 197.958,870.950 189.140,693.696 189.140,693.696 249.707,698.225 308.134,698.182 366.562,698.135 429.401,693.696 429.401,693.696 420.576,870.950 " />
      </Canvas>
   </toolkit:Viewbox>
</Grid>
Run Code Online (Sandbox Code Playgroud)

silverlight grid xaml canvas viewbox

5
推荐指数
2
解决办法
3485
查看次数

什么是停止.NET线程最不优雅的方法?

我正在测试一些错误处理代码,并试图确保我的应用程序和数据始终失败到一致状态.我已经验证了代码与"正常"注入错误的方式一起工作,但我想更进一步.

杀死.NET线程最突然的方法是什么,让错误处理的机会最少?

例如,您如何测试CLR约束执行区域的限制?或者我如何模拟像拔插头一样严肃的东西?

.net c# error-handling

3
推荐指数
1
解决办法
428
查看次数

LINQ to Entity Framework许多渴望加载问题

我有以下查询:

var MyQuery = from e in ContractContext.Equipments.Include("Manufacturers")
              where e.Customers.ID == customer.ID
              select e;
Run Code Online (Sandbox Code Playgroud)

一切正常,我得到我的设备,它正确加载制造商表(热切).但是,当我尝试执行以下多对多查询时:

var MyQuery = from e in ContractContext.Equipments.Include("Manufacturers")
              where e.Customers.ID == customer.ID
              from cce in e.ContractEquipments
              where cce.Contracts.EndedOn >= DateTime.Today
              select e;
Run Code Online (Sandbox Code Playgroud)

其中"ContractEquipments"是"设备"和"合同"之间的多对多查找,但是当此查询运行时,制造商表不再容易加载.知道如何在不执行以下操作的情况下解决此问题:

if (MyEntity.Manufacturers.IsLoaded == false) 
   MyEntity.ManufacturersReference.Load()
Run Code Online (Sandbox Code Playgroud)

这个项目需要几个小时执行,我想保持数据库调用的数量.

编辑#1:

我也尝试了这个没有成功:

var MyQuery = from e in ContractContext.Equipments.Include("Manufacturers")
              where e.Customers.ID == customer.ID
              join cce in ContractContext.ContractEquipments 
                on e.ID equals cce.Equipments.ID
              where cce.Contracts.EndedOn >= DateTime.Today
              select e;
Run Code Online (Sandbox Code Playgroud)

.net c# linq entity-framework eager-loading

2
推荐指数
1
解决办法
3979
查看次数

C#/ .NET中的可变字符串编辑

我想在.NET应用程序中就地编辑字符串.我知道这StringBuilder允许我进行就地附加,插入和替换,但它不允许这样做的简单方法:

while (script.IndexOf("@Unique", StringComparison.InvariantCultureIgnoreCase) != -1)
{
   int Location = script.IndexOf("@Unique", StringComparison.InvariantCultureIgnoreCase);
   script = script.Remove(Location, 7);
   script = script.Insert(Location, Guid.NewGuid().ToString());
}
Run Code Online (Sandbox Code Playgroud)

由于没有IndexOfStringBuilder.有没有人有一个有效的方法来进行文本信息的就地编辑?

编辑#1:更改样本以使每个'替换'需要具有不同的结果.

.net c#

2
推荐指数
1
解决办法
2731
查看次数

Silverlight数据绑定在代码后面

我在Silverlight 3数据网格中做了类似的事情:

for (int x = 0; x < ThisForecast.Periods.Count; x++)
{
   var TextColumn = new DataGridTextColumn();
   TextColumn.Header = ThisForecast.Periods[x].Name;
   TextColumn.Binding = new Binding(String.Format("Periods[{0}].Quantity", x));
   TextColumn.Binding.Mode = BindingMode.TwoWay;
   TextColumn.IsReadOnly = false;
   dgItemForecast.Columns.Add(TextColumn);
}
Run Code Online (Sandbox Code Playgroud)

并且它工作得很好,但我想将ready更改为更像:TextColumn.IsReadOnly = new Binding(String.Format("Periods [{0}].IsReadOnly",x));

虽然在XAML中似乎很容易做到,但我无法找到在后面的代码中执行此操作的正确方法.显然我无法将其设置为"绑定",但我可以在哪里设置类似的东西?

编辑#1:

我看了BindingOperations.SetBinding()下面给出的,但找不到DependencyPropertyIsReadOnly.有没有办法注入/添加一个?

data-binding silverlight xaml

1
推荐指数
1
解决办法
8696
查看次数

什么是一个很好的ASP.NET MVC详细错误页面示例

我查看了一些其他问题,寻找一个详细的错误页面布局的一个很棒的例子,但没有找到任何东西.我相信很多人以前都做过这件事.

要求*必须显示异常信息(类型,堆栈跟踪)*如果可能,应显示表单值*应显示导致问题的区域/控制器/操作

我想出的最好的是:

@model System.Web.Mvc.HandleErrorInfo
@{ViewBag.Title = "Error";}

<h2>Sorry, an error occurred while processing your request.</h2>
<p>Please copy and paste this entire page in an email to 
<a href="mailto:me@me.com?subject=Website%20Error">Me</a> 
along with any other information you can provide so we can
get this fixed ASAP!</p>
@if (Model != null) {
    <h1>@Model.Exception.GetType().Name<br />
        thrown in @Model.ControllerName @Model.ActionName</h1>

    <h2>Details</h2>
    <div>
        @Model.Exception.ToString()
    </div>
}
Run Code Online (Sandbox Code Playgroud)

error-handling model-view-controller asp.net-mvc

1
推荐指数
1
解决办法
495
查看次数