小编Ale*_*x J的帖子

你如何在GIT中打开两个版本的项目

我习惯于常规的源控制系统,如TFS,SVN等.我正在尝试学习GIT.我遇到了需要从两个不同的分支机构打开两个项目解决方案的需求.在TFS中没问题,只需转到各个文件夹并打开解决方案即可.您可以打开其中两个并进行比较.

我如何在GIT中执行此操作.据我所知,当我在GIT控制台中切换分支时,同一组文件会被更改.所以,我切换到branch1并打开解决方案,然后我切换到控制台中的branch2,然后会发生什么?我可以再次打开项目并仍然打开两个版本.这是使用Visual Studio for .net.

git

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

阻止收集过程一次n个项目 - 一旦完成,就会继续

我有以下场景.

  1. 我从数据库中将50个作业转换为阻塞集合.

  2. 每项工作都是一项长期工作.(可能是).所以我想在一个单独的线程中运行它们.(我知道 - 将它们作为Task.WhenAll运行并让TPL解决它可能会更好 - 但我想控制同时运行多少次)

  3. 说我想同时运行其中的5个(可配置)

  4. 我创建了5个任务(TPL),每个作业一个并行并行运行.

我想要做的是,一旦第4步中的一个作业完成,就立即在阻塞集合中选择下一个作业,并继续进行直到完成所有50个作业.

我正在考虑创建一个Static blockingCollection和一个TaskCompletionSource,它将在作业完成时调用,然后它可以再次调用使用者从队列中一次选择一个作业.我还想在每项工作上调用async/await - 但这是最​​重要的 - 不确定这是否对该方法有影响.

这是完成我想要做的事情的正确方法吗?

与此链接类似,但是捕获的是我想在前N个项目中的一个完成后立即处理下一个作业.毕竟N都没有完成.

更新:

好吧,如果有人想在以后使用它,我有这个代码片段正是我想要的.如下所示,创建了5个线程,每个线程在完成当前操作时启动下一个作业.在任何给定时间只有5个线程处于活动状态.我知道这可能不会像这样100%工作,并且如果与一个cpu/core一起使用,将会出现上下文切换的性能问题.

var block = new ActionBlock<Job>(
                job => Handler.HandleJob(job), 
                    new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 5 });

              foreach (Job j in GetJobs())
                  block.SendAsync(j);
Run Code Online (Sandbox Code Playgroud)

工作2开始于主题:13.等待时间:3600000ms.时间:2014年8月29日下午3:14:43

工作4开始于主题:14.等待时间:15000ms.时间:2014年8月29日下午3:14:43

作业0在线程上开始:7.等待时间:600000ms.时间:2014年8月29日下午3:14:43

作业1开始于主题:12.等待时间:900000ms.时间:2014年8月29日下午3:14:43

工作3开始于主题:11.等待时间:120000ms.时间:2014年8月29日下午3:14:43

工作4完成了主题:14.2014年8月29日下午3:14:58

作业5开始于主题:14.等待时间:1800000ms.时间:2014年8月29日下午3:14:58

工作3完成线程:11.2014年8月29日下午3:16:43

Job 6从线程开始:11.等待时间:1200000ms.时间:2014年8月29日下午3:16:43

作业0完成了主题:7.2014年8月29日下午3:24:43

Job 7在线程上开始:7.等待时间:30000ms.时间:2014年8月29日下午3:24:43

工作7完成线程:7.2014年8月29日下午3:25:13

Job 8开始于主题:7.等待时间:100000ms.时间:2014年8月29日下午3:25:13

作业8完成了主题:7.2014年8月29日下午3:26:53

Job 9从线程开始:7.等待时间:900000ms.时间:2014年8月29日下午3:26:53

工作1完成线程:12.2014年8月29日下午3:29:43

作业10开始于主题:12.等待时间:300000ms.时间:2014年8月29日下午3:29:43

作业10完成了主题:12.8/29/2014 3:34:43 PM

工作11开始于主题:12.等待时间:600000ms.时间:2014年8月29日下午3:34:43

工作6完成线程:11.2014年8月29日下午3:36:43

工作12开始于主题:11.等待时间:300000ms.时间:2014年8月29日下午3:36:43

工作12完成了主题:11.2014年8月29日下午3:41:43

工作13开始于主题:11.等待时间:100000ms.时间:2014年8月29日下午3:41:43

作业9完成了主题:7.2014年8月29日下午3:41:53

Job 14从线程开始:7.等待时间:300000ms.时间:2014年8月29日下午3:41:53

工作13完成线程:11.2014年8月29日下午3:43:23

工作11完成了主题:12.2014年8月29日下午3:44:43

工作5完成线程:14.8/29/2014 3:44:58 PM …

.net c# task-parallel-library async-await blockingcollection

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

你能简化这个linq到实体的groupBy查询吗?

 List<int> types = Hospitals.GroupBy(h => h.TypeId, (key, group) => group.First())
                    .Select(t=> y.TypeId).ToList();
Run Code Online (Sandbox Code Playgroud)

试图从List<Hospital>对象中获取不同的类型ID .我不是这些linq查询的专家,只是想知道是否有更好的方法来做到这一点.

c# linq linq-to-entities

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

任何简单的方法来检查在checkboxlist控件中是否没有选择任何项目?

我知道我可以遍历一个checkboxlist.Items并查看是否没有选中它们,但是在后面的代码中是否有更好的方法来确定是否没有选择任何项目?

asp.net checkboxlist c#-2.0

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

使用 RegisterClientScriptBlock 在页面末尾注册脚本以避免 sys undefined 错误

当显示模式弹出窗口时,我需要以编程方式调用以下内容来设置某些内容。

Sys.Application.add_load(modalSetup);
Run Code Online (Sandbox Code Playgroud)

一些顺理成章的事情。

<script type='text/javascript'>
            Sys.Application.add_load(modalSetup);
            function modalSetup() {
                var modalPopup = $find("PopupBehaviorId");
                if (modalPopup != null) {
                    modalPopup.add_shown(SetFocusOnControl);
                }
            }

            function SetFocusOnControl() {
                alert('test');
            }
        </script>
Run Code Online (Sandbox Code Playgroud)

现在的问题是我script manager在主页上有一个。

如果我手动(不是以编程方式)将此脚本放在 的下面script manager in the master page,它将正常工作。

但是,当我使用任一方法以编程方式将其添加到模式弹出窗口(我需要)的用户控件中时ScriptManager.RegisterClientScriptBlock or Page.ClientScript.RegisterClientScriptBlock,它会引发著名的sys is undefined错误。

我知道这种情况正在发生,因为这个程序注入将其放入该行执行Head section之前。ScriptManager

我该如何解决这个问题。是否可以说将此脚本插入到页面末尾而不是顶部?

javascript asp.net webforms asp.net-ajax scriptmanager

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

在控制台应用程序中的不同线程中运行任务

我对此做了很多研究,但我似乎仍然无法做到这一点.我必须生成一个包含1000页的pdf文件(我使用一个库),需要为不同的数据执行N次.数据是相互独立的,我可以完全并行生成这个,这正是我想要做的.理想情况下,我希望在10个线程中完成此操作,每个线程在内存中生成pdf并在结束时保存它.假设每个pdf需要15分钟(1000页),如果按顺序执行此操作,那么对于10个pdf文件将是150分钟,如果我使用10个线程则为30分钟.我知道人们不太喜欢穿线,但我怎么能加速呢?

我在看,ThreadPool但后来我Task在4.0中看到了这个新功能.我读到如果我使用的话,我可以强制每个任务在一个单独的线程中运行,TaskCreationOptions.LongRunning但这对我来说似乎不起作用.我也尝试使用ThreadPool但是因为每个PDF都是从url生成的,并且由于某种原因,WebRequest.Create(url)从线程池调用时该方法似乎不会执行?但我想我宁愿让新的Task库工作.

这就是我现在所拥有的,但它似乎仍然按顺序执行.

Task myTask= Task.Factory.StartNew(() =>
                {
                  //code for the task.
                  //get html content
                  //generate pdf file.
                }
                }, new CancellationToken(false), TaskCreationOptions.LongRunning, TaskScheduler.Default);

myTask.Wait();
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?如果您有任何建议,请让我知道.我目前无法超越.net 4.0.

c# multithreading asynchronous

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