Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 21.08.2015
Сообщений: 16
1

Выполнить существующий код, через заданный интервал

17.04.2016, 08:46. Показов 1335. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.

Дано:
Есть в наличии 2 файла, первый выполняется единыжды, второй выполняется по интервалу.

1)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
using OpenRA.Primitives;
using OpenRA.Traits;
 
namespace OpenRA.Mods.Common.Traits
{
    [Desc("Player receives a unit for free once the building is placed. This also works for structures.",
        "If you want more than one unit to appear copy this section and assign IDs like FreeActor@2, ...")]
    public class FreeActorInfo : ITraitInfo
    {
        [ActorReference, FieldLoader.Require]
        [Desc("Name of the actor.")]
        public readonly string Actor = null;
 
        [Desc("Offset relative to the top-left cell of the building.")]
        public readonly CVec SpawnOffset = CVec.Zero;
 
        [Desc("Which direction the unit should face.")]
        public readonly int Facing = 0;
 
        public virtual object Create(ActorInitializer init) { return new FreeActor(init, this); }
    }
 
    public class FreeActor
    {
        public FreeActor(ActorInitializer init, FreeActorInfo info)
        {
            if (init.Contains<FreeActorInit>() && !init.Get<FreeActorInit>().ActorValue)
                return;
 
            init.Self.World.AddFrameEndTask(w =>
            {
                w.CreateActor(info.Actor, new TypeDictionary
                {
                    new ParentActorInit(init.Self),
                    new LocationInit(init.Self.Location + info.SpawnOffset),
                    new OwnerInit(init.Self.Owner),
                    new FacingInit(info.Facing),
                });
            });
        }
    }
 
    public class FreeActorInit : IActorInit<bool>
    {
        [FieldFromYamlKey]
        public readonly bool ActorValue = true;
        public FreeActorInit() { }
        public FreeActorInit(bool init) { ActorValue = init; }
        public bool Value(World world) { return ActorValue; }
    }
 
    public class ParentActorInit : IActorInit<Actor>
    {
        public readonly Actor ActorValue;
        public ParentActorInit(Actor parent) { ActorValue = parent; }
        public Actor Value(World world) { return ActorValue; }
    }
}
2)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
using System.Linq;
using OpenRA.Traits;
 
namespace OpenRA.Mods.Common.Traits
{
    [Desc("Lets the actor spread resources around it in a circle.")]
    class SeedsResourceInfo : UpgradableTraitInfo
    {
        public readonly int Interval = 75;
        public readonly string ResourceType = "Ore";
        public readonly int MaxRange = 100;
 
        public override object Create(ActorInitializer init) { return new SeedsResource(init.Self, this); }
    }
 
    class SeedsResource : UpgradableTrait<SeedsResourceInfo>, ITick, ISeedableResource
    {
        readonly SeedsResourceInfo info;
 
        readonly ResourceType resourceType;
        readonly ResourceLayer resLayer;
 
        public SeedsResource(Actor self, SeedsResourceInfo info)
            : base(info)
        {
            this.info = info;
 
            resourceType = self.World.WorldActor.TraitsImplementing<ResourceType>()
                .FirstOrDefault(t => t.Info.Name == info.ResourceType);
 
            if (resourceType == null)
                throw new InvalidOperationException("No such resource type `{0}`".F(info.ResourceType));
 
            resLayer = self.World.WorldActor.Trait<ResourceLayer>();
        }
 
        int ticks;
 
        public void Tick(Actor self)
        {
            if (IsTraitDisabled)
                return;
 
            if (--ticks <= 0)
            {
                Seed(self);
                ticks = info.Interval;
            }
        }
 
        public void Seed(Actor self)
        {
            var cell = Util.RandomWalk(self.Location, self.World.SharedRandom)
                .Take(info.MaxRange)
                .SkipWhile(p => !self.World.Map.Contains(p) ||
                    (resLayer.GetResource(p) == resourceType && resLayer.IsFull(p)))
                .Cast<CPos?>().FirstOrDefault();
 
            if (cell != null && resLayer.CanSpawnResourceAt(resourceType, cell.Value))
                resLayer.AddResource(resourceType, cell.Value, 1);
        }
    }
}
Задача:
скопировать из второго файла код, отвечающий за интервал и вставить в первый,
так, чтобы если значение интервала явно не указано, то код должен выполняться один раз,
а если указано, то через промежуток указанный в интервале.

Помогите пожалуйста правильно это сделать, не повредив структуру языка.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2016, 08:46
Ответы с готовыми решениями:

Refresh страницы через заданный интервал времени
Написанна страница на asp.net которая выводит данные через gridview, как сделать так чтобы...

Копирование значений ячеек через заданный интервал
Добрый день, необходимо перенести определенные ячейки из одной книги в другую с определенным...

Очистка всех таблиц в БД MS SQL Server через заданный интервал
Как сделать очистку всех таблиц в БД MS SQL Server через заданный интервал либо при наступление...

Поочередно передавать текст в textBox1 через заданный интервал времени
Ребята подскажите пожалуйста! Нужно в поле textBox1 сначала передавать текст 1 и через к примеру...

21
0 / 0 / 0
Регистрация: 21.08.2015
Сообщений: 16
25.04.2016, 09:45  [ТС] 21
Author24 — интернет-сервис помощи студентам
всё настолько сложно?
может быть тип таймера не тот?
0
0 / 0 / 0
Регистрация: 21.08.2015
Сообщений: 16
26.04.2016, 19:20  [ТС] 22
апап
0
26.04.2016, 19:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2016, 19:20
Помогаю со студенческими работами здесь

Как сделать событие, происходящее через заданный интервал времени, например 5 сек.?
Просто subj, собственно.

Как разбить заданные диапазон времени на маленькие промежутки через заданный интервал
Привет всем! пожалуйста подскажите как сделать следующее: есть форма для ввода времени начала...

После третьего клика по компоненту выполнить заданный код
когда пользователь кликнул на компонент ну допустим На edit три раза пусть тогда выполняется код...

Выполнить действие через заданный промежуток времени
Как сделать так, чтобы через каждый промежуток времени(15мин) выполнялось определённое действие?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru