小编Mas*_*Mas的帖子

在.NET WCF服务中组织大量方法的好方法是什么?

我目前正在使用接口中定义的大量方法的WCF服务.这些方法中的大多数是简单的CRUD操作,使用实体框架有一些逻辑,并且可以很容易地分成功能区域.只有一个文件接近1K行代码,我想将其拆分以保持可维护性.我正在考虑以下事项:

  • 将服务文件拆分为部分类.但它仍然是一个代码量很大的单个类.尽管如此,我想这真的不是问题.
  • 有一个实现具有标准错误处理和ObjectContext创建/销毁的服务接口的类,但将调用路由到静态帮助程序类.我以前做过这个,但不知怎的,我感觉不干净.

此外,按功能区域划分,还是通过CRUD方法(组合在一起,共同创建等)会更好.

在处理WCF服务时,这必然是一个非常常见的问题.组织WCF服务方法的好方法是什么?

更新

最后,我决定将服务调用传递给内部静态类.

.net wcf

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

C#.NET任务:如何在多个任务完成时获取通知

在我的WPF应用程序中,我需要并行运行2个长时间运行的任务,这两个任务都返回需要在UI中显示的数据.

我的视图模型中有一个名为IsBusy的属性,在两个任务完成之前都应该为true.

如何在2个长时间运行的任务完成后收到通知?

我不想使用Task.WaitAll,因为它会阻止我的UI线程.我不想使用ContinueWith链接任务,因为我希望这些长时间运行的任务并行运行.

.net .net-4.0 task

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

禁用SyntaxHighlighter的双击选择

SyntaxHighlighter具有允许通过双击选择代码的功能。如何禁用此功能?

syntaxhighlighter

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

实体框架4.0:实体SQL CAST操作不起作用

我正在尝试进行一个查询,我将一个文本列(包含一个整数作为文本)转换为Int32.这是查询:

SELECT VALUE t FROM MyEntities AS t WHERE CAST(t.TextColumn AS Edm.Int32) > 5
Run Code Online (Sandbox Code Playgroud)

但是,我得到一个带有以下消息的System.Data.EntitySqlException:

找不到类型'Edm.Int32'.确保加载了所需的模式,并正确导入名称空间.近类型名称,第1行,第75列.

根据MSDN,Edm.Int32应该是有效类型.

有谁知道什么是错的?

编辑:

经过一些试验和错误,我发现以下工作:

SELECT VALUE t FROM MyEntities AS t WHERE CAST(t.TextColumn AS System.Int32) > 5
Run Code Online (Sandbox Code Playgroud)

MSDN中的示例是错误的吗?我觉得我在这里错过了一些东西......

.net entity-framework entity-sql entity-framework-4

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

C#BlockingCollection生成者使用者而不阻塞使用者线程

我有一种情况,我需要有大量(数百)队列,其中的项目应按顺序处理(需要单线程消费者).我的第一个实现,基于示例,我使用单个长时间运行的Task per BlockingCollection来使用队列项.但是,我最终得到了一个拥有数百个线程的应用程序,这些线程大部分都处于空闲状态,除了占用内存之外什么都不做

我认为只有在队列中有东西需要处理才能运行消费者任务会更好,但是,我无法找到能够提供最佳实践的样本.

我提出了类似于下面的解决方案.但问题是,每个项目都会产生一个新任务(这可能是效率低下的?浪费资源?).但是如果我没有为每个项目创建一个新任务,我不能保证一个项目不会在未处理的队列中.

    private object _processSyncObj = new object();
    private volatile bool _isProcessing;
    private BlockingCollection<string> _queue = new BlockingCollection<string>();

    private void EnqueueItem(string item)
    {
        _queue.Add(item);
        Task.Factory.StartNew(ProcessQueue);
    }

    private void ProcessQueue()
    {
        if (_isProcessing)
            return;

        lock (_processSyncObj)
        {
             string item;
             while (_isProcessing = _queue.TryTake(out item))
             {
                 // process item
             }
        }
    }
Run Code Online (Sandbox Code Playgroud)

针对这种情况的最佳实践/最佳解决方案是什么,并保证项目在队列中没有任何情况,但没有消费者在运行?

.net c# blockingcollection

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

我得到";预期"错误我不知道我在哪里想念这个标志.谁来解决这个问题.附上了.code

我正在编写一个Asp.net代码,用于在从数据库中获取视频后在网站上播放视频.代码给出错误";预期"我试图找到我错过的地方,但我不能.请帮我解决它.在第8行给出错误,即string text = "<embed src="" + Str + "" height="300" width="500" />"; 这里是代码

protected void Page_Load(object sender, EventArgs e)
{
    string play = Request.QueryString["id"];
    string strSQL = "select * from videos where videosong_loc='" + play + "'";

    SqlConnection sconn = new SqlConnection(@"Data Source=Khawaja\\SQLEXPRESS;Initial Catalog=TaskDB;Integrated Security=True;");
    SqlCommand scomm = new SqlCommand(strSQL, sconn);
    sconn.Open();
    SqlDataReader sreader = scomm.ExecuteReader();
    if (sreader.Read())
    {
        string Str = "videos\\" + sreader[1].ToString();
        string text = "<embed src="" + Str + "" height="300" width="500" />";
        //string text …
Run Code Online (Sandbox Code Playgroud)

c# asp.net

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